Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Xiaomi
soar
提交
f59e41f0
S
soar
项目概览
Xiaomi
/
soar
大约 1 年 前同步成功
通知
398
Star
8512
Fork
1328
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
soar
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f59e41f0
编写于
1月 08, 2019
作者:
martianzhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add JSONFind for json recursive find by key
上级
817e8dd4
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
49 addition
and
0 deletion
+49
-0
common/testdata/TestJSONFind.golden
common/testdata/TestJSONFind.golden
+1
-0
common/tricks.go
common/tricks.go
+15
-0
common/tricks_test.go
common/tricks_test.go
+33
-0
未找到文件。
common/testdata/TestJSONFind.golden
0 → 100644
浏览文件 @
f59e41f0
[Janet Elliotte Jason]
common/tricks.go
浏览文件 @
f59e41f0
...
...
@@ -25,6 +25,8 @@ import (
"path/filepath"
"reflect"
"sort"
"github.com/tidwall/gjson"
)
// GoldenDiff 从 gofmt 学来的测试方法
...
...
@@ -104,3 +106,16 @@ func SortedKey(m interface{}) []string {
sort
.
Strings
(
keys
)
return
keys
}
// JSONFind iterate find name in json
func
JSONFind
(
json
string
,
name
string
,
result
*
[]
string
)
{
res
:=
gjson
.
Parse
(
json
)
res
.
ForEach
(
func
(
key
,
value
gjson
.
Result
)
bool
{
if
key
.
String
()
==
name
{
*
result
=
append
(
*
result
,
value
.
String
())
}
else
{
JSONFind
(
value
.
String
(),
name
,
result
)
}
return
true
// keep iterating
})
}
common/tricks_test.go
浏览文件 @
f59e41f0
...
...
@@ -24,6 +24,7 @@ import (
)
func
TestCaptureOutput
(
t
*
testing
.
T
)
{
Log
.
Debug
(
"Entering function: %s"
,
GetFunctionName
())
c1
:=
make
(
chan
string
,
1
)
// test output buf large than 65535
length
:=
1
<<
16
+
1
...
...
@@ -48,4 +49,36 @@ func TestCaptureOutput(t *testing.T) {
case
<-
time
.
After
(
1
*
time
.
Second
)
:
t
.
Error
(
"capture timeout, pipe read hangup"
)
}
Log
.
Debug
(
"Exiting function: %s"
,
GetFunctionName
())
}
func
TestJSONFind
(
t
*
testing
.
T
)
{
Log
.
Debug
(
"Entering function: %s"
,
GetFunctionName
())
jsons
:=
[]
string
{
`{
"programmers": [
{
"firstName": "Janet",
"lastName": "McLaughlin",
}, {
"firstName": "Elliotte",
"lastName": "Hunter",
}, {
"firstName": "Jason",
"lastName": "Harold",
}
]
}`
,
}
err
:=
GoldenDiff
(
func
()
{
for
_
,
json
:=
range
jsons
{
var
result
[]
string
JSONFind
(
json
,
"firstName"
,
&
result
)
fmt
.
Println
(
result
)
}
},
t
.
Name
(),
update
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
Log
.
Debug
(
"Exiting function: %s"
,
GetFunctionName
())
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录