您的位置:首页 > 编程语言 > Python开发

Python下关于JSON的一些事儿

2015-10-24 15:34 661 查看

JSON的两种结构

对象

{

key1 : value1,
key2 : value2
......
}


数组

[

{
key1 : value1
......
},
{
key2 : value2
......
}
]


普通字符串, JSON字符串, JSON对象的区别

普通字符串

str = ’ this is string ’



str = ” this is string “

JSON字符串

jsonStr = ” { ’ name ’ : ’ James ’ , ’ age ’ : 30 } “

JSON对象

jsonObj = { “name” : “James” , “age” : 30}

注: Json字符串仅仅是一个字符串, 一个整体. 需要先将Json字符串转化为Json对象,再提取其存储的数据

处理Json数据

将整个Json文件传入

如果直接使用如下代码

data = json.loads(open("output.json").read())


会遇到ValueError:Extra data错误, 说是多个Json对象的问题, 因为在一个Json文件中肯定包含多个Json对象.

因此, 我们需要将代码修改为如下形式:

data = []
for line in open("output.json"):
line = line.strip('\n')
data.append(json.loads(line))


OK, 这样就能解决了.

注: json.loads()传入的参数需要是Json字符串, 我一行一行的读入, 传入的是Json字符串, 最后存储到一个list中.

将数据写入到Json文件

需要特别注意的是, 由于Python会默认把字符串转化为单引号’ ‘, 但是Json文件不支持单引号, 只能存储双引号” “. 因此, 我们需要用dumps()方法进行转化:

info={}
info["code"] = 1
info["id"] = 1900
info["name"] = "smith"
info["sex"] = "man"
print 'before dumps:', info
>>>before dumps: {'code': 1, 'sex': 'man', 'id': 1900, 'name': 'smith'}

str = json.dumps(info)
print 'after dumps:', str
>>>after dumps: {"code": 1, "sex": "man", "id": 1900, "name": "smith"}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: