【发布时间】:2021-05-15 00:56:04
【问题描述】:
我的 json 文件是这样的:
[{"traceId": "23245342fbvf3", "kind": "SERVER", "localEndpoint": {"serviceName": "client", "tags": {"host_ip": "10.42.0.180", "http.method": "POST"}, {"traceId": "veeg34vdfgd4", "duration": 1313178, "localEndpoint": {"serviceName": "product_service", "ipv4": "172.17.0.8"}}]
我使用这个脚本:
def parse_nested_json(json_d):
result = {}
for key in json_d.keys():
if not isinstance(json_d[key], dict):
result[key] = json_d[key]
else:
result.update(parse_nested_json(json_d[key]))
return result
json_data = pd.read_json("data.json")
json_list = [j[1][0] for j in json_data.iterrows()]
parsed_list = [parse_nested_json(j) for j in json_list]
result = pd.DataFrame(parsed_list)
result.to_csv("new_data.csv", index=False)
这可以正常工作,但仅适用于 json 文件的第一部分。是否可以在 csv 中获取两个部分,指示标题,如 0/traceId(第一个)1/traceId(第二个)
【问题讨论】:
-
帮助我们为您提供帮助。您希望您的 csv 看起来像什么以及现在的样子
-
我从 'traceId' 到 'http.method' 的所有内容都很好,但第二列(POST 之后)没有任何内容
-
您的 json 无效
-
您的示例 JSON 无效。有效 JSON 的明显答案是
pd.json_normalize()