def
ergodic_data
(
self
,
data
:
dict
,
result
=
""
)
:
if
isinstance
(
data
,
dict
)
:
for
k
,
v
in
data
.
items
(
)
:
if
result
==
""
:
self
.
ergodic_data
(
v
,
k
)
else
:
self
.
ergodic_data
(
v
,
result
+
'.'
+
f'
{
k
}
'
)
elif
isinstance
(
data
,
(
list
,
tuple
)
)
:
if
len
(
data
)
==
1
:
for
i
in
range
(
len
(
data
)
)
:
self
.
ergodic_data
(
data
[
i
]
,
result
)
else
:
for
i
in
range
(
len
(
data
)
)
:
self
.
ergodic_data
(
data
[
i
]
,
result
)
else
:
self
.
datas
[
result
]
=
str
(
data
)
return
list
(
self
.
datas
.
keys
(
)
)
with
open
(
r'D:\zsh\Program\alls\Lucy\test\test.json'
)
as
f
:
datas
=
f
.
read
(
)
keys
=
returnJsonNode
(
)
.
ergodic_data
(
data
=
json
.
loads
(
datas
)
,
result
=
""
)
print
(
keys
)
因为json里面命名是_的 所以我这里用’.'代替的 可以更换成下划线
运行如下
有很多可以进行转换 这里因为是直接取出来不加任何其他处理 如果是要和python 进行jsonpath取数 可更换里面参数 如下
方法有很多 之前那篇文章 函数没有写完 所以导致不能完全取出来 json node,
这篇文章
后续我会写成工具 包含分解成有层级的表或者Excel 如果有更好的方法 欢迎提出
def
json
_txt(self, dic_
json
):
#self.debug_print("
json
_txt")
if isinstance(dic_
json
, dict): # 判断是否是字典类型isinstance 返回True false
for key in dic_
json
:
#dic_
json
=
json
.loads(s)
s = dic_
json
[key]
#self.debug_print(str(len(s)) + " type:" + str(type(s)))
t=str(type(s))
背景:
json
数组,每个
json
里都有 parent 字段,想要求具体某个 parent 下的所有
子节点
结构如下:例如我想求 parent 为 3 的所有
子节点
,也就是 4,5,6,7代码如下:let arr = [
id:3,
parent:''
id:4,
parent:3
var
json
str="[{'name':'a','value':1},{'name':'b','value':2}]";
var
json
array = eval('('+
json
str+')');//eval()方法转换
json
对象
var arr =
"name" : $('#names').val(),
"value" : $('...
export function getParent(data, nodeId,nodeName) {
const query = nodeId;
const
json
= data;
let parentNode = null;
let node = null;
const getNode = (
json
, id) => {
// 1.第一层 root 深度遍历整个
JSON
for (let i = 0; i <
json
.length; i+.
调用API和文档数据库会返回嵌套的
JSON
对象,当我们使用
Python
尝试将嵌套结构中的键转换为列时,数据加载到pandas中往往会得到如下结果:
df = pd.DataFrame.from_records(results [“ issues”],columns = [“ key”,“ fields”])
说明:这里results是一个大的字典,issues是results其中的一个键,issues的值为一个嵌套
JSON
对象字典的列表,后面会看..
def print_
json
(data, indent=0):
for key, value in data.items():
print('\t' * indent + str(key))
if isinstance(value, dict):
print_
json
(value, indent+1)
else:
print('\t' * (indent+1) + str(value))
# 假设数据存储在 'data.
json
' 文件中
with open('data.
json
') as f:
data =
json
.load(f)
print_
json
(data)
这段代码会递归打印出
JSON
数据的所有
子节点
。您可以根据具体的
JSON
数据结构进行调整。