- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我无法在 python 中将 jsonString 转换为可解析的 json。我的脚本从网络服务器获取 jsonData,如下所示:
results = requests.post(url, headers=headers, data=data)
print results
>>"{\"result\":[{\"0\":\"005d000000450RiAAI\",\"1\":\"003J00000160bqeIAA\",\"2\":\"a09J000000CmRjYIAV\",\"3\":\"Rob Robenson\",\"4\":\"Zac Rosenberg\",\"5\":\"Class IV - Lead\"}, {\"0\":\"005d000000450RiAAI\",\"1\":\"003J0000016ZjuCIAS\",\"2\":\"a09J000000CxvgCIAR\",\"3\":\"Bob Bobenson\",\"4\":\"Zac Rosenberg\",\"5\":\"Class III - Quote/Deal\"}]}"
我用json.loads解析,得到:
json_results = json.loads(results.text)
print json_results
>>{"result":[{
"0":"005d000000450RiAAI",
"1":"003J00000160bqeIAA",
"2":"a09J000000CmRjYIAV",
"3":"Rob Robenson",
"4":"Zac Rosenberg",
"5":"Class IV - Lead"
},
{
"0":"005d000000450RiAAI",
"1":"003J0000016ZjuCIAS",
"2":"a09J000000CxvgCIAR",
"3":"Bob Bobenson",
"4":"Zac Rosenberg",
"5":"Class III - Quote/Deal"
}]
}
有趣的是,当我得到 json_results 的类型时:
print type(json_results)
>>unicode
应该是那种类型吗?
当我尝试解析 json 时,我得到:
print json_results['result']
>>TypeError: string indices must be integers
我尝试替换 json 字符串中的“\”:
results = requests.post(url, headers=headers, data=data)
results = results.text.replace('\\','')
json_results = json.loads(results)
>>File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/
json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/
json/decoder.py", line 368, in decode
raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 1 column 4 - line 1 column 299 (char 3 - 298)
我做错了什么?
谢谢大家!
编辑:评论中描述的尝试过的方法:
json_results = results.json()
print json_results['result']
>>TypeError: string indices must be integers
但是,
json_results = results.json()
print json_results
>>{"result":[{"0":"005d000000450RiAAI","1":"003J00000160bqeIAA","2":"a09J000000CmRjYIAV","3":"Rob Robenson","4":"Zac Rosenberg","5":"Class IV - Lead"}, {"0":"005d000000450RiAAI","1":"003J0000016ZjuCIAS","2":"a09J000000CxvgCIAR","3":"Bob Bobenson","4":"Zac Rosenberg","5":"Class III - Quote/Deal"}]}
这看起来不错,不是吗?为什么不解析?
最佳答案
无论出于何种原因,服务器都会向您发送一个表示字符串的 JSON 文档,该字符串本身就是一个表示字典的 JSON 文档 - 因此您必须对其进行两次解码:
json_results = json.loads(results.json())
使用 pprint
可以更清楚地看到发生了什么:
>>> from pprint import pprint
>>> pprint(results.text)
'"{\\"result\\":[{\\"0\\":\\"005d000000450RiAAI\\",\\"1\\":\\"003J00000160bqeIAA\\",\\"2\\":\\"a09J000000CmRjYIAV\\",\\"3\\":\\"Rob Robenson\\",\\"4\\":\\"Zac Rosenberg\\",\\"5\\":\\"Class IV - Lead\\"}, {\\"0\\":\\"005d000000450RiAAI\\",\\"1\\":\\"003J0000016ZjuCIAS\\",\\"2\\":\\"a09J000000CxvgCIAR\\",\\"3\\":\\"Bob Bobenson\\",\\"4\\":\\"Zac Rosenberg\\",\\"5\\":\\"Class III - Quote/Deal\\"}]}"'
>>> pprint(json.loads(results.text))
u'{"result":[{"0":"005d000000450RiAAI","1":"003J00000160bqeIAA","2":"a09J000000CmRjYIAV","3":"Rob Robenson","4":"Zac Rosenberg","5":"Class IV - Lead"}, {"0":"005d000000450RiAAI","1":"003J0000016ZjuCIAS","2":"a09J000000CxvgCIAR","3":"Bob Bobenson","4":"Zac Rosenberg","5":"Class III - Quote/Deal"}]}'
>>> pprint(json.loads(json.loads(results.text)))
{u'result': [{u'0': u'005d000000450RiAAI',
u'1': u'003J00000160bqeIAA',
u'2': u'a09J000000CmRjYIAV',
u'3': u'Rob Robenson',
u'4': u'Zac Rosenberg',
u'5': u'Class IV - Lead'},
{u'0': u'005d000000450RiAAI',
u'1': u'003J0000016ZjuCIAS',
u'2': u'a09J000000CxvgCIAR',
u'3': u'Bob Bobenson',
u'4': u'Zac Rosenberg',
u'5': u'Class III - Quote/Deal'}]}
关于python - 将 jsonString 转换为可在 Python 中解析的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28310586/
我有一个名为 MediaList 的类,我想将这个类的值解析为 JSON 字符串并向后解析。 public class KeywordList { private List keywor
我尝试使用@NotNull注释,但它不起作用。如果 JsonString 中缺少任何字段,则会给出 null(String) 或 zero(int)。但我想要的是,如果类中定义的 JsonStr 中缺
这个问题已经有答案了: How to use Jackson to deserialise an array of objects (10 个回答) 已关闭 3 年前。 不是 How to use J
我的代码如下所示: ServiceHandler sh = new ServiceHandler(); // Making a request to url and g
我使用 ajaxCall 返回一个数组,如下所示: http://d.pr/i/ojR4 对象内部是 Json (例如: http://d.pr/i/aAM2 )当我将其推送到我的 .hbs 文件(主
String fileURL="https://tools.keycdn.com/geo.json?host=192.168.6.9"; URL url = new URL(fileURL);
JSON 字符串看起来像 { {"widget": { "debug": "on", "window": { "title": "Sample Konfabulator
Web 服务正在返回 jsonString。解析后,我必须将其值绑定(bind)到表中。 最简单的方法是查找字符串中的每个对象。例如:我的字符串以以下格式返回: { "Table1": [
我得到了以下 json: { "ID": "1234567", "dangereousCargo": true, "numberOfPassangers": 164,
我得到以下 JSONString通过 HTTP Request .我想要所有 amount此字符串中的值。 到目前为止我试过这个: try { // Getting JSON Array
我正在使用 Web 服务创建 C# 应用程序。在我的 Web 服务中,我使用了 JSONString 数据。但我无法将此字符串转换为 DataSet。 我的 JSONString 是: { "
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: What is the difference between JSON and Object Literal Not
我正在构建一个 json 数组,我需要 json 数据的结构如下例所示。具体来说,我需要 "success": 1 和 "result": [ ] 来仅环绕数组中的对象一次。但是,我的代码在每个数组开
我收到这样的回复 String result = responseEntity.getBody(); { "FailureReason": "", "State": "True",
我是 iOS 新手。我创建了一个 JSON NSDictionary像这样: NSArray *keys = [NSArray arrayWithObjects:@"User", @"Password
JsonString.txt { "profile": { "name": { "formatted": "John Jackson", "givenName": "John", "familyNam
我在 json 数据中有一个名为“content”的参数,我想从中获取图像 url 并在 ImageView 中动态显示该图像。 我已经尝试了 Pattern 和 Matcher 类,我正确地获取了第
我在 JSONString 中发送 4 个不同的值。我需要以某种方式(解码?)将它们转换为 PHP 值,以将其发送到 MySQL 数据库。 此函数将 is 发送到 php 文件: - (void)my
我是 Swift 的新手,我正在将 JsonObject 作为字符串获取,我想获取 LoginStatus 的值,我该如何解析它 { "ID":16, "NameSurname":"UĞU
我正在实现一个实用方法来将 queryString 转换为 JsonString。 我的代码如下: public static string GetJsonStringFromQuer
我是一名优秀的程序员,十分优秀!