Python下关于JSON的一些事儿

JSON的两种结构
  1. 对象
{

    key1 : value1,
    key2 : value2
    ......
}
  1. 数组
[

    {
        key1 : value1
        ...... 
    },
    {
        key2 : value2
        ......
    }
]
普通字符串, JSON字符串, JSON对象的区别
  1. 普通字符串
    str = ’ this is string ’

    str = ” this is string “

  2. JSON字符串
    jsonStr = ” { ’ name ’ : ’ James ’ , ’ age ’ : 30 } “

  3. 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"}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值