概述
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成,因而在工业界得到广泛应用。
json有两种结构,对象形式和数组形式。
对象形式的json是一个无序的键值对集合,如{"hello":"world"},多个键值对用逗号分隔。
数组形式的json是值的有序集合:[“hello”,"world"],多个值用逗号分隔。
json的对象形式和数组形式可以嵌套,使得json可以表示非常复杂的结构。
一、json在Python中的使用
Python下有多种json库,使用的比较多的是json-py、simplejson和C-json。Python2.6以后,自带simplejson。
使用json首先需要导入json库,如果你不确定你的python版本,比较好的写法如下:
try:
import simplejson as json
except Exception, e:
import json
使用最多的函数如下:
(1)dumps函数
将python字典或列表json化
simplejson.dumps({'fir':'hello','sec':'world','thr':'!!'})
可在dumps中指定sort_keys参数,设置是否需要排序。排序按照key值进行
simplejson.dumps({'fir':'hello','sec':'world','thr':'!!'},sort_keys=True)
(2)loads函数
将json格式解析成python格式,可以是字典也可以是列表
obj = json.loads('["foo",{"bar":["baz",null,1.0,2]}]')
与上述两个函数对应的是dump函数和load函数,它们的处理对象是json文件流。
一段完整的代码如下:
try:
import simplejson as json
except Exception, e:
import json
def testjson():
try:
return_dict = {"return_code":"200"}
return json.dumps(return_dict)
except Exception, e:
return_dict = {"return_code":"201"}
return return json.dumps(return_dict)
if __name__ == "__main__":
res_dict = json.loads(testjson())
if res_dict["return_code"] == "200":
print "OK"
elif res_dict["return_code"] == "201"
print "BAD"
else:
print "ERROR!"
二、json在C/C++下的使用
在C/C++下使用json必须下载json-c并安装。
安装完成后,使用时要下include “json.h”
头文件中提供了丰富的json函数供我们使用。列举常用的如下:
(1)json_object类型
json_object类型表示json对象,通常我们使用该类型的指针。各函数返回的基本也是json_object*类型的。
(2) json_tokener_parse
将json类型的string转成json对象,返回值为json_object*类型,失败返回null。
(3)json_object_get_*
这是一类方法,*用类型替换,比如json_object_get_int,json_object_get_string等,返回值就是对应的类型。该类函数的作用是将json类型转成需要的类型。是最常用的函数
(4)json_object_object_get
这个函数使用的很广泛,作用是通过key获取value,函数需要接受两个参数,第一个表示存储value的json_object*,第二个表示key
(5)json_object_put
这个函数用于销毁一个json_object对象,接受参数为json_object*。我们使用完以后千万不要忘记调用该函数。因为json_object内部实现是new出来的,不调用就会造成内存泄露。
注:json_object_put仅需要执行一次,只需要销毁父对象即可。比如存在一个json_object,从这个json_object下生成其它json_object,只需要把父json_object销毁,由它派生出的json_object都将被销毁。如果先销毁了子对象,再销毁父对象就会出错。此外,父对象也不能重复销毁,请不要重复调用json_object删除同一个对象。
参考:
python下使用json:http://blog.sina.com.cn/s/blog_7ca42bff010185ha.html
C/C++下使用json:http://hi.baidu.com/jiangyangw3r/item/de986277a49b822ad7a89c9b
关于json、simplejson、cjson的性能讨论:
http://blog.csdn.net/chenggong2dm/article/details/9062803
http://blog.csdn.net/toontong/article/details/4979572
http://xmgu2008.blog.163.com/blog/static/139122380201411791731319/
————The End————
最后
以上就是灵巧石头为你收集整理的json格式及json在Python和C/C++中的使用的全部内容,希望文章能够帮你解决json格式及json在Python和C/C++中的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复