如何从fi访问JSON子数据

2024-10-01 00:32:47 发布

您现在位置:Python中文网/ 问答频道 /正文

{
    "event": {
        "firstEventHeader": {
            "domain": "someDomain",
            "eventId": "event001",
            "priority": "Normal",
            "startTimer": timeInMicroSec
        },
        "secondEventHeader": {
            "additionalHeader": [
                {
                    "header": [
                        {
                            "Name": "Name1",
                            "Value": "value1"
                        },
                        {
                            "Name": "Name2",
                            "Value": "value2"
                        },
                        {
                            "Name": "Name3",
                            "Value": "value3"
                        },
                   ],
                    "name": "Field1"
                },

        "thirdEventHeader": {
            "additionalHeader": [
                {
                    "header": [
                        {
                            "Name": "Name4",
                            "Value": "value4"
                        },
                        {
                            "Name": "Name5",
                            "Value": "value5"
                        },
                        {
                            "Name": "Name6",
                            "Value": "value6"
                        },

                    ],
                    "name": "Field2"
                },

我有一个以上格式的文件,它是使用Python脚本动态生成的

我想从firstEventHeader访问startTimer,然后从secondEventHeader访问name和value&;第三个头儿。 例如

startTimer : 12345678
    Name1:value1
    Name2:value2
    Name3:value3
    Name4:value4 
    Name5:value5
    Name6:value6

注意:JSON格式的数据在不同的文件格式中可用,而不是.JSON。因此加载json将无法工作,因为文件格式不同


Tags: namevalueheadervalue1name1value2name2name3
2条回答

如果文件是这种格式,请使用json模块将其加载到字典中。然后你就可以浏览那本字典了

import json
with open('filename') as f:
  data == json.load(f)

e = data['event']
print("Start timer:", e['firstEventHeader']['startTimer'])
def process_header(header_fields):
  for x in header_fields:
    print("Name:", x['Name'], ", Value:", x['Value'])

print("Second event header")
process_header(e['secondEventHeader']['additionalHeader']['header'])

print("Third event header")
process_header(e['thirdEventHeader']['additionalHeader']['header'])

您可以使用json内置库。假设您可以将json数据放入一些string,这应该可以让您开始:

import json

d = json.loads(string)
print(d['event']['firstEventHeader']['startTimer'])

您需要进行一些迭代来获得所有的Name:Value

相关问题 更多 >