用Python处理json数据

版权声明:本文为博主原创文章,欢迎转赞,但请保留作者署名。 https://blog.csdn.net/liuchunming033/article/details/52325932

1、什么是JSON:

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。第一次接触到它是在进行服务器端接口测试的时候。现在很多服务器返回的结果都是json格式。主要是由于它比较容易解析和生成。JSON格式的数据本质上一种被格式化了的字符串。

2、Python处理JSON

用Python处理json也很简单,Python自带有json模块。可以对python对象与json字符串进行相互转换。

2.1、编码

json.dumps()把一个Python对象编,码转换成Json字符串。
举个例子:

>>> import json
>>> python_obj = [[1,2,3],123,123.123,'abc',{'key1':(1,2,3),'key2':(4,5,6)},True,False,None]
>>> json_str=json.dumps(python_obj)
>>> print json_str
[[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}, true, false, null]

通过输出的结果可以看出,简单类型的python对象通过encode之后跟其原始的repr()输出结果非常相似,但是有些数据类型进行了改变,例如上例中的元组则转换为了列表,True变成了true,Flase变成了false,None变成了null。也就是说在json的编码过程中,会存在从python原始类型向json类型的转化过程。具体的转化对照如下:
这里写图片描述
json.dumps方法提供了很多好用的参数可供选择,比较常用的有sort_keys(对dict对象进行排序,我们知道默认dict是无序存放的),skipkeys(对于键不是基本类型Python字典键值对将被过滤),indent(格式化输出用的)等参数。还是举个例子:

>> python_obj2={"key2": [4, 5, 6], "key1": [1, 2, 3]}
>>> json_str2=json.dumps(python_obj2)
>>> json_str2=json.dumps(python_obj2,sort_keys=True,indent=2)
>>> print json_str2
{
  "key1": [
    1, 
    2, 
    3
  ], 
  "key2": [
    4, 
    5, 
    6
  ]
}
>>> json_str2=json.dumps(python_obj2,sort_keys=False,indent=2)
>>> print json_str2
{
  "key2": [
    4, 
    5, 
    6
  ], 
  "key1": [
    1, 
    2, 
    3
  ]
}

sort_keys=True时,压缩过后的json字符串中字典是被排过序的。再加上indent的参数进行适当的缩进,打印此来的json字符串很漂亮。

2.2、解码

json.loads()把Json格式字符串解码,转换成Python对象。
还是举个例子,将上例中编码的json字符串再解码成Python对象:

>>> print json.loads(json_str)
[[1, 2, 3], 123, 123.123, u'abc', {u'key2': [4, 5, 6], u'key1': [1, 2, 3]}, True, False, None]

loads方法返回了原始的对象,但是仍然发生了一些数据类型的转化。比如,上例中‘abc’转化为了unicode类型。从json到python的类型转化对照如下:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/liuchunming033/article/details/52325932