解决Python解析JSON报错:string indices must be integers
本文详解Python解析JSON时出现的“string indices must be integers”错误。该错误通常由非标准JSON字符串(如key未加双引号)引起。通过对比标准json库与demjson库的使用示例,展示如何利用正则或demjson库处理此类异常数据,确保解析成功。
Python JSON解析报错排查
本文详细介绍在Python中解析JSON数据时,若遇到“string indices must be integers”报错的解决方法。
在使用import json进行JSON解析时,可能会遇到一个异常情况:
string indices must be integers
该错误提示表明[ ]中的索引应为整数而非字符串。尽管字典通常通过键访问,但此报错暗示解析结果可能被视为列表结构。
这通常源于字符串解析问题。打印解析后的结果,会发现是一长串字符串,key密集排列而value缺失。检查原始字符串,发现key未被双引号包裹,格式类似'{a:"abcde",b:"abcde"}'。
此类字符串不符合JSON规范。处理方法是使用正则表达式将key转换为标准格式后再解析,或使用功能更强大的库。
安装pip install demjson后,问题得以解决。
标准json库使用示例
以下是标准json库的使用示例:
import json
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
json = json.dumps(data)
print json
输出结果为:
[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]
import json
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = json.loads(jsonData)
print text
解析后的对象显示为:
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
使用demjson处理非标准JSON
接下来演示demjson库的使用方法:
import demjson
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
json = demjson.encode(data)
print json
编码输出结果为:
[{"a":1,"b":2,"c":3,"d":4,"e":5}]
import demjson
json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = demjson.decode(json)
print text
解码后的对象显示为:
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
import demjson
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
json = demjson.encode(data)
print json
再次编码输出结果为:
[{"a":1,"b":2,"c":3,"d":4,"e":5}]
import demjson
json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = demjson.decode(json)
print text
解码后的对象显示为:
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
推荐在线JSON工具
此外,推荐几款实用的JSON在线工具供参考:
在线JSON代码检验、检验、美化、格式化工具: http://tools.jb51.net/code/json
JSON在线格式化工具: http://tools.jb51.net/code/jsonformat
在线XML/JSON互相转换工具: http://tools.jb51.net/code/xmljson
json代码在线格式化/美化/压缩/编辑/转换工具: http://tools.jb51.net/code/jsoncodeformat
在线json压缩/转义工具: http://tools.jb51.net/code/json_yasuo_trans
更多Python相关内容感兴趣的读者可查看本站专题:《Python操作json技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









