Python json

来自linux中国网wiki
跳到导航 跳到搜索

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

JSON 函数

使用 JSON 函数需要导入 json 库:import json。

现实中用得多应该是restful 啦

json.dumps

函数	描述
json.dumps	将 Python 对象编码成 JSON 字符串
 因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数。

json.dumps 用于将 Python 对象编码成 JSON 字符串。

 cat j.py 
#!/usr/bin/python
import json
data = [ { 'a':1, 'b':2 , 'c':3}]
json = json.dumps(data)
print json
evan@kalipc:~/tmp$ python j.py 
[{"a": 1, "c": 3, "b": 2}]

 使用参数让 JSON 数据格式化输出
 In [1]: import json 

In [2]: print json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', '
   ...: : '))
{
    "a": "Runoob",
    "b": 7
}



如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数
json.dump()用于将dict类型的数据转成str,并写入到json文件中。下面两种方法都可以将数据写入json文件

import json  
  
name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'}  
          
emb_filename = ('/home/cqh/faceData/emb_json.json')  

# solution 1
jsObj = json.dumps(name_emb)    
with open(emb_filename, "w") as f:  
    f.write(jsObj)  
    f.close()  
    
# solution 2   
json.dump(name_emb, open(emb_filename, "w"))

dump eg
In [4]: import json

In [5]: test_dict = {'bigberg': [7600, {1: [['iPhone', 6300], ['Bike', 800], ['shirt'
   ...: , 300]]}]}

In [6]: print(test_dict)
{'bigberg': [7600, {1: [['iPhone', 6300], ['Bike', 800], ['shirt', 300]]}]}

In [7]: print(type(test_dict))
<type 'dict'>

In [8]: json_str = json.dumps(test_dict)

In [9]: print(json_str)
{"bigberg": [7600, {"1": [["iPhone", 6300], ["Bike", 800], ["shirt", 300]]}]}

In [10]: print(type(json_str))
<type 'str'>

 
myeg
In [40]: payload = {'some': 'data', 'a': 'av'}

In [41]: json.dumps(payload)
Out[41]: '{"a": "av", "some": "data"}'

python 原始类型向 json 类型的转化对照表:

Python	              JSON
dict	              object
list, tuple	      array
str, unicode	      string
int, long, float	number
True	                true
False	               false
None	                null

json.loads

json.loads 用于解码 JSON 数据。该函数返回 Python 字段的数据类型。

语法
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

实例
以下实例展示了Python 如何解码 JSON 对象:

#!/usr/bin/python
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}

json 类型转换到 python 的类型对照表:

JSON	Python
object	dict
array	list
string	unicode
number (int)	int, long
number (real)	float
true	True
false	False
null	None

see also

更多内容参考:https://docs.python.org/2/library/json.html。

使用第三方库:Demjson

https://docs.python.org/2/library/json.html


http://www.runoob.com/python/python-json.html

Json模块dumps、loads、dump、load函数

python读写json文件