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计算最大优先级队列实例
Dec 18 Python
简单介绍使用Python解析并修改XML文档的方法
Oct 15 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
May 05 Python
Django框架模板介绍
Jan 15 Python
python word转pdf代码实例
Aug 16 Python
python getpass模块用法及实例详解
Oct 07 Python
python向图片里添加文字
Nov 26 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
Python实现动态给类和对象添加属性和方法操作示例
Feb 29 Python
如何通过python实现IOU计算代码实例
Nov 02 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 Python
利用python如何实现猫捉老鼠小游戏
Dec 04 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
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
php去除HTML标签实例
2013/11/06 PHP
php获取随机数组列表的方法
2014/11/13 PHP
CI框架中site_url()和base_url()的区别
2015/01/07 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
JavaScript实现数据类型的相互转换
2016/03/06 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
2016/05/14 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
Bootstrap Table使用整理(五)之分页组合查询
2017/06/09 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
JavaScript console的使用方法实例分析
2020/04/28 Javascript
原生JS实现天气预报
2020/06/16 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
[03:42]2018完美盛典-《加冕》
2018/12/16 DOTA
python将ip地址转换成整数的方法
2015/03/17 Python
Python下线程之间的共享和释放示例
2015/05/04 Python
详解Python中pandas的安装操作说明(傻瓜版)
2019/04/08 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
Django使用消息提示简单的弹出个对话框实例
2019/11/15 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
2014年企业员工工作总结
2014/12/09 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技