我已经解析了如下的json数据:
{
"results": {
"authors": [
[
{
"person": "Person1 Name",
"key": "director"
}
],
[
{
"person": "Person2 Name",
"key": "author"
},
{
"person": "Person3 Name",
"key": "author"
}
]
]
}
}
即。可以有几位导演和几位作者。我应该像字符串一样得到它:
directors = "Person1 Name"
authors = "Person2 Name, Person3 Name"
看起来我应该通过每个值并检查其key
。但我怎么能用simplejson做呢?
答案 0 :(得分:3)
要从json结构中提取数据,可以使用jsonpath
模块。见http://goessner.net/articles/JsonPath/。我不是这个模块的作者。
您的代码看起来像这样:
directors = jsonPath(json, '$..authors[?(@.key=="director")]')
authors = jsonPath(json, '$..authors[?(@.key=="author")]')
您需要提取名称并将它们连接在一起,但我认为您会发现这很容易。
答案 1 :(得分:1)
以下代码适用于我:
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)
答案 2 :(得分:0)
我认为你的json设计是错误的。 你应该像这样制作json:
foo = {
"results": {
"directors": [
"person": "Person1 Name",
],
"authors":[
"person": "Person2 Name",
"person": "Person3 Name",
]
}
}
现在,如果有人要求董事
directors = ','.join(foo["directors"])
和作者
authors = ','.join(foo["authors"])
感谢