Python解析json时提示“string indices must be integers”问题解决方法


Posted in Python onJuly 31, 2019

本文实例讲述了Python解析json时提示“string indices must be integers"问题解决方法。分享给大家供大家参考,具体如下:

import json,但是出现了一个奇怪的问题:

string indices must be integers

这个错误告诉我,[ ]里面应该是数字而不是字符串,但是dict使用key访问也可以,这种错误感觉解析出来的结果像是一个list。

所以考虑是字符串解析的问题。打印解析的结果,是一长串的字符串,一堆的key挤在一起,value都缺失了。再打印原始的字符串,发现了一些细节,key并没有被双引号包围,类似于'{a:"abcde",b:"abcde"}'。

好吧,这是一个不符合json规范的字符串,要处理它,可以使用正则表达式转换成规范的key再解析或者使用其他功能更加强大的库——demjson。

pip install demjson,解决。

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的用法:

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}

Python 相关文章推荐
简洁的十分钟Python入门教程
Apr 03 Python
浅要分析Python程序与C程序的结合使用
Apr 07 Python
详解Python中DOM方法的动态性
Apr 11 Python
python安装以及IDE的配置教程
Apr 29 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
解决Matplotlib图表不能在Pycharm中显示的问题
May 24 Python
使用NumPy和pandas对CSV文件进行写操作的实例
Jun 14 Python
对Python中list的倒序索引和切片实例讲解
Nov 15 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
Dec 15 Python
python实现俄罗斯方块小游戏
Apr 24 Python
Python 高效编程技巧分享
Sep 10 Python
python实现求纯色彩图像的边框
Apr 08 Python
Python Web程序搭建简单的Web服务器
Jul 31 #Python
python字典的常用方法总结
Jul 31 #Python
python Django的web开发实例(入门)
Jul 31 #Python
Flask框架模板继承实现方法分析
Jul 31 #Python
Flask框架模板渲染操作简单示例
Jul 31 #Python
opencv导入头文件时报错#include的解决方法
Jul 31 #Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
Jul 31 #Python
You might like
NT IIS下用ODBC连接数据库
2006/10/09 PHP
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
2011/05/07 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
php操作MongoDB类实例
2015/06/17 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
PHP重载基础知识回顾
2020/09/10 PHP
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
JS文本框不能输入空格验证方法
2013/03/19 Javascript
jquery的map与get方法详解
2013/11/04 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
jquery实现倒计时功能
2015/12/28 Javascript
javascript设置和获取cookie的方法实例详解
2016/01/05 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
2017/01/13 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
jQuery each和js forEach用法比较
2019/02/27 jQuery
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
对numpy中的数组条件筛选功能详解
2018/07/02 Python
python 实现识别图片上的数字
2019/07/30 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
超全Python图像处理讲解(多模块实现)
2020/04/13 Python
社会学专业学生职业规划书
2014/02/07 职场文书
产品售后服务承诺书
2014/05/21 职场文书
购房公证委托书(2014版)
2014/09/12 职场文书
助学贷款贫困证明
2014/09/23 职场文书
督导岗位职责
2015/02/04 职场文书