嗨,我是JSON和Python的新手,这是我的两难境地,它已经困扰我两天了。下面是我想要解析的示例json。
{
"Tag1":"{
"TagX": [
{
"TagA": "A",
"TagB": 1.6,
"TagC": 1.4,
"TagD": 3.5,
"TagE": "01",
"TagF": null
},
{
"TagA": "A",
"TagB": 1.6,
"TagC": 1.4,
"TagD": 3.5,
"TagE": "02",
"TagF": null
}
],
"date": "10.03.2017 21:00:00"
}"
}下面是我的python代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import json
import urllib2
jaysonData = json.load(urllib2.urlopen('URL'))
print jaysonData["Tag1"]如何获取TagB和TagC的值?当我尝试使用以下命令访问它们时
jaysonData = json.load(urllib2.urlopen('URL'))
print jaysonData["Tag1"]["TagX"]["TagB"]输出为:
TypeError: string indices must be integers当我这样做的时候:
print jaysonData["Tag1"]输出为:
{
"TagX": [
{
"TagA": "A",
"TagB": 1.6,
"TagC": 1.4,
"TagD": 3.5,
"TagE": "01",
"TagF": null
},
{
"TagA": "A",
"TagB": 1.6,
"TagC": 1.4,
"TagD": 3.5,
"TagE": "02",
"TagF": null
}
],
"date": "10.03.2017 21:00:00"
}"我需要连接到TagX、TagD、TagE,但是下面的代码给出了这个错误:
print jaysonData["Tag1"]["TagX"]打印
print jaysonData["Tag1"]["TagX"]
TypeError: string indices must be integers如何使用python访问TagF的TagA?提前谢谢。
发布于 2017-03-15 15:54:05
在返回的JSON中,Tag1的值是一个字符串,而不是更多的JSON。它看起来确实是JSON编码的字符串,所以再次将其转换为json:
jaysonData = json.load(urllib2.urlopen('URL'))
tag1JaysonData = json.load(jaysonData['Tag1'])
print tag1JaysonData["TagX"]还要注意,TagX是一个列表,而不是字典,所以其中有多个TagB:
print [x['TagB'] for x in tag1JaysonData['TagX']]发布于 2017-03-15 14:12:53
TagX是由2个字典组成的list,TagB是dictionary。
print jaysonData["Tag1"]["TagX"][0]["TagB"]您需要删除Tag1花括号前后的双引号。
{
"Tag1":{
"TagX": [
{
"TagA": "A",
"TagB": 1.6,
"TagC": 1.4,
"TagD": 3.5,
"TagE": "01",
"TagF": null
},
{
"TagA": "A",
"TagB": 1.6,
"TagC": 1.4,
"TagD": 3.5,
"TagE": "02",
"TagF": null
}
],
"date": "10.03.2017 21:00:00"
}
}发布于 2017-03-15 14:13:20
{
"Tag1":{
"TagX": [
{
"TagA": "A",
"TagB": 1.6,
"TagC": 1.4,
"TagD": 3.5,
"TagE": "01",
"TagF": null
},
{
"TagA": "A",
"TagB": 1.6,
"TagC": 1.4,
"TagD": 3.5,
"TagE": "02",
"TagF": null
}
],
"date": "10.03.2017 21:00:00"
}
}你必须在Tag1的花括号前去掉双引号。我已经在上面的样品中删除了。
就像这样。
print jaysonData["Tag1"]["TagX"][0]["TagA"]https://stackoverflow.com/questions/42802194
复制相似问题