2016-05-13 85 views
1

我想从这个嵌套的json有效载荷只获取值A。解析嵌套的json有效载荷python

我的功能:

import requests 
import json 
def payloaded(): 
from urllib.request import urlopen 
with urlopen("www.example.com/payload.json") as r: 
    data = json.loads(r.read().decode(r.headers.get_content_charset("utf-8"))) 
text = (data["bod"]["id"]) 
print(text) 

有效载荷:

bod: { 
id: [ 
    { 
     value: "A", 
     summary: "B", 
     format: "C" 
    } 
    ] 
}, 

目前,它的括号内恢复一切[... ...值...汇总格式。 ..]

找到的解决方案:

def payloaded(): 
from urllib.request import urlopen 
with urlopen("www.example.com/payload.json") as r: 
    data = json.loads(r.read().decode(r.headers.get_content_charset("utf-8"))) 
text = (data["bod"]["id"][0]["value"]) 
print(text) 

回答

1

由于id值是一个列表(即使它只是包含单个值),你就需要去里面有一个列表索引。由于在Python列表是零索引(他们从零开始),你会使用[0]提取的第一个元素:

data["bod"]["id"][0]["value"] 
+0

谢谢!我提出了同样的解决方案。 – avorter

0

这工作:

def payloaded(): 
from urllib.request import urlopen 
with urlopen("www.example.com/payload.json") as r: 
    data = json.loads(r.read().decode(r.headers.get_content_charset("utf-8"))) 
text = (data["bod"]["id"][0]["value"]) 
print(text)