如何从解析后的json中提取具有特定键的数据?

2024-05-16 09:06:15 发布

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

我已经解析了json数据:

{
    "results": {
        "authors": [
            [
                {
                    "person": "Person1 Name",
                    "key": "director"
                }
            ],
            [
                {
                    "person": "Person2 Name",
                    "key": "author"
                },
                {
                    "person": "Person3 Name",
                    "key": "author"
                }               
            ]
        ]
    }
}

也就是说,可以有几位导演和几位作者。我应该把它做成细绳:

^{pr2}$

看起来我应该检查每个值并检查它的key。但是我怎么能用simplejson做到呢?在


Tags: 数据keynamejson作者authorsresultsauthor
3条回答

我认为你的json设计是错误的。 您应该使json如下所示:

foo =    {
        "results": {
            "directors": [            
                        "person": "Person1 Name",
                ],
            "authors":[                
                        "person": "Person2 Name",                 
                        "person": "Person3 Name",
                ]        
        }
    }

如果有人要导演的话

^{pr2}$

和作者

authors = ','.join(foo["authors"])

谢谢

以下代码适用于我:

authors = []
directors = []
for persons in movie_json.get('results').get('authors'):
    for person in person:
        if person.get('person'):
            if person.get('key')=='author':
                authors.append(person.get('person'))
            elif person.get('key')=='director':
                directors.append(person.get('person'))
authors = None if authors == [] else ', '.join(authors)
directors = None if directors == [] else ', '.join(directors)

要从json结构中提取数据,可以使用jsonpath模块。见http://goessner.net/articles/JsonPath/。我不是本模块的作者。在

你的代码应该是这样的:

directors = jsonPath(json, '$..authors[?(@.key=="director")]')
authors = jsonPath(json, '$..authors[?(@.key=="author")]')

你需要提取名字并把它们连在一起,但我想你会发现这很容易。在

相关问题 更多 >