Python Json体系化与反类别化的亲自去做

json11

json11是贰个轻量级的C++11库, 提供JSON的体系化和反连串化作用.

主导的靶子是 json11::Json. 能够用来代表大肆档案的次序的JSON数据:null,
bool, number (int or double), string (std::string),
array (std::vector), 或者object (std::map).

json11::Json花色的靶子和任何值类型一样,支持赋值、拷贝、传递、相比等操作.
大家还提供了支持方法

  • Json::dump用来将json11::Json花色的靶子种类化为string
  • Json::parse (static)用来将std::string反种类化为json11::Json种类的目的

动用C++11提供的起初化器能够很轻易创制一个json11::Json对象:

Json my_json = Json::object {
    { "key1", "value1" },
    { "key2", false },
    { "key3", Json::array { 1, 2, 3 } },
};
std::string json_str = my_json.dump();

这边还提供了有的松手的构造函数,能够将规范库类型和用户自定义类型自动的转向为json11::Json对象。例如:

class Point {
public:
    int x;
    int y;
    Point (int x, int y) : x(x), y(y) {}
    Json to_json() const { return Json::array { x, y }; }
};

std::vector<Point> points = { { 1, 2 }, { 10, 20 }, { 100, 200 } };
std::string points_json = Json(points).dump();

json11::Json同有的时候间帮衬下标和首要字索引:

Json json = Json::array { Json::object { { "k", "v" } } };
std::string str = json[0]["k"].string_value();

微信公众号:马志峰的编程笔记

笔录一名普普通通程序猿的成材之路

365bet亚洲真人 1

Python Json系列化与反类别化的示范,json连串化

不等的编制程序语言有例外的数据类型; 比方说:

Python的数据类型有(dict、list、string、int、float、long、bool、None)
Java的数据类型有(bool、char、byte、short、int、long、float、double)
C的数据类型有(bit、bool、char、int、short、long、unsigned、double、float)
365bet亚洲真人,Tcl的数据类型(int、bool、float、string)
Ruby的数据类型(Number、String、Ranges、Symbols、true、false、Array、Hash)

他俩的协同特征是,都有字符串类型!

故而要实现分歧的编制程序语言之间对象的传递,就务须把对象体系化为正式格式,举例XML,但更加好的章程是类别化为JSON,因为JSON表示出来便是一个字符串,能够被全数语言读取,也可以平价地囤积到磁盘恐怕通过网络传输。
JSON不止是正经格式,并且比XML更加快,何况能够一向在Web页面中读取,特别方便.

JSON类型     Python类型
{}                  dict
[]                  list
“string”            str
1234.56             int或float
true                True
false               False
null                None

在python中,连串化能够掌握为:把python的对象编码转变为json格式的字符串,反系列化能够领略为:把json格式字符串解码为python数据对象。在python的规范库中,特意提供了json库与pickle库来管理那有的。

json的dumps方法和loads方法,可完成数据的类别化和反系列化。具体来讲,dumps方法,可将json格式数据连串为Python的相干的数据类型;loads方法规是倒转,把python数据类型调换为json相应的数据类型格式须求。在体系化时,中文汉字总是被转移为unicode码,在dumps函数中拉长参数ensure_ascii=False就可以缓慢解决。

下边是json的系列化与反连串化:

1、Json种类化如下:

import json
print (json.__all__)  #查看json库的所有方法
['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONEncoder']

未在dumps函数中丰裕参数ensure_ascii=False,结果如下:

#coding: utf-8
import json
dict = {'name':'zhangsan', 'age':33, 'address':'红星路'}
print('未序列化前的数据类型为:', type(dict))
print('为序列化前的数据:', dict)
#对dict进行序列化的处理
dict_xu = json.dumps(dict)  #直接进行序列化
print('序列化后的数据类型为:', type(dict_xu))
print('序列化后的数据为:', dict_xu)

未连串化前的数据类型为: <class ‘dict’>
为连串化前的数额: {‘name’: ‘zhangsan’, ‘address’: ‘红星路’, ‘age’:
33}
类别化后的数据类型为: <class ‘str’>
系列化后的数码为: {“name”: “zhangsan”, “address”:
“\u7ea2\u661f\u8def”, “age”: 33}

在dumps函数中丰裕参数ensure_ascii=False,结果如下:

#coding: utf-8
import json

dict = {'name':'zhangsan', 'age':33, 'address':'红星路'}
print('未序列化前的数据类型为:', type(dict))
print('为序列化前的数据:', dict)
#对dict进行序列化的处理
dict_xu = json.dumps(dict,ensure_ascii=False)  #添加ensure_ascii=False进行序列化
print('序列化后的数据类型为:', type(dict_xu))
print('序列化后的数据为:', dict_xu)

未连串化前的数据类型为: <class ‘dict’>
为系列化前的多寡: {‘address’: ‘红星路’, ‘age’: 33, ‘name’:
‘zhangsan’}
种类化后的数据类型为: <class ‘str’>
体系化后的多寡为: {“address”: “红星路”, “age”: 33, “name”:
“zhangsan”}

2、Json反系列化如下:

#coding: utf-8
import json
dict = {'name':'zhangsan', 'age':33, 'address':'红星路'}
print('未序列化前的数据类型为:', type(dict))
print('为序列化前的数据:', dict)
#对dict进行序列化的处理
dict_xu = json.dumps(dict,ensure_ascii=False)  #添加ensure_ascii=False进行序列化
print('序列化后的数据类型为:', type(dict_xu))
print('序列化后的数据为:', dict_xu)
#对dict_xu进行反序列化处理
dict_fan = json.loads(dict_xu)
print('反序列化后的数据类型为:', type(dict_fan))
print('反序列化后的数据为: ', dict_fan)

未系列化前的数据类型为: <class ‘dict’>
为体系化前的数量: {‘name’: ‘zhangsan’, ‘age’: 33, ‘address’:
‘红星路’}
类别化后的数据类型为: <class ‘str’>
系列化后的数据为: {“name”: “zhangsan”, “age”: 33, “address”:
“红星路”}
反种类化后的数据类型为: <class ‘dict’>
反连串化后的数量为:  {‘name’: ‘zhangsan’, ‘age’: 33, ‘address’:
‘红星路’}

在其实的工作中,种类化可能反体系化的或者是一个文书的款式,不容许像如上写的那样轻巧的,下来就来完成这一部分,把公文内容开始展览体系化和反连串化,先来看类别化的代码,两步操作:1、先类别化
列表对象 ;2、步把类别化成的字符串写入文件:

#coding: utf-8
import json

list = ['Apple','Huawei','selenium','java','python']
#把list先序列化,写入到一个文件中
# 两步操作 1步先序列化 列表对象 2步把序列化成的字符串写入文件
json.dump(list, open('e:/test.txt','w'))  
r1=open('e:/test.txt','r')
print(r1.read())

[“Apple”, “Huawei”, “selenium”, “java”, “python”]

反类别化,两步操作:1、先读取文件的字符串对象;2、然后反种类化成列表对象:

#coding: utf-8
import json

list = ['Apple','Huawei','selenium','java','python']
#把list先序列化,写入到一个文件中
# 两步操作 1步先序列化 列表对象 2步把序列化成的字符串写入文件
json.dump(list, open('e:/test.txt','w'))  
r1=open('e:/test.txt','r')
print(r1.read())
#------------------------------------------------------------
#两步操作:1、先读取文件的字符串对象;2、然后反序列化成列表对象
res=json.load(open('e:/test.txt','r'))
print (res)
print('数据类型:',type(res))

[“Apple”, “Huawei”, “selenium”, “java”, “python”]
[‘Apple’, ‘Huawei’, ‘selenium’, ‘java’, ‘python’]
数据类型: <class ‘list’>

如上正是本文的全体内容,希望对大家的求学抱有扶助,也希望大家多多补助帮客之家。

Json连串化与反系列化的身先士卒,json系列化
不一样的编制程序语言有例外的数据类型; 譬喻说:
Python的数据类型有(dict、list、string、int、float、…

在dumps函数中增加参数ensure_ascii=False,结果如下:

进而选用了三个比十分的小的库,独有hpp和cpp五个代码文件。

在python中,系列化能够驾驭为:把python的对象编码调换为json格式的字符串,反系列化能够明白为:把json格式字符串解码为python数据对象。在python的规范库中,特地提供了json库与pickle库来管理那有个别。

在达成了《c++ Primer》前12章的读书后,第三次尝试阅读C++源码。

2、Json反类别化如下:

要害指标:换一种情势学习,通过解决阅读进度中遇见的难题来读书C++知识。

未系列化前的数据类型为: <class ‘dict’>
为体系化前的多寡: {‘name’: ‘zhangsan’, ‘address’: ‘红星路’, ‘age’:
33}
种类化后的数据类型为: <class ‘str’>
种类化后的多少为: {“name”: “zhangsan”, “address”:
“\u7ea2\u661f\u8def”, “age”: 33}

[“Apple”, “Huawei”, “selenium”, “java”, “python”]

昨今分裂的编制程序语言有差异的数据类型; 比如说:

#coding: utf-8
import json
dict = {'name':'zhangsan', 'age':33, 'address':'红星路'}
print('未序列化前的数据类型为:', type(dict))
print('为序列化前的数据:', dict)
#对dict进行序列化的处理
dict_xu = json.dumps(dict,ensure_ascii=False)  #添加ensure_ascii=False进行序列化
print('序列化后的数据类型为:', type(dict_xu))
print('序列化后的数据为:', dict_xu)
#对dict_xu进行反序列化处理
dict_fan = json.loads(dict_xu)
print('反序列化后的数据类型为:', type(dict_fan))
print('反序列化后的数据为: ', dict_fan)
#coding: utf-8
import json

dict = {'name':'zhangsan', 'age':33, 'address':'红星路'}
print('未序列化前的数据类型为:', type(dict))
print('为序列化前的数据:', dict)
#对dict进行序列化的处理
dict_xu = json.dumps(dict,ensure_ascii=False)  #添加ensure_ascii=False进行序列化
print('序列化后的数据类型为:', type(dict_xu))
print('序列化后的数据为:', dict_xu)

JSON类型     Python类型
{}                  dict
[]                  list
“string”            str
1234.56             int或float
true                True
false               False
null                None

发表评论

电子邮件地址不会被公开。 必填项已用*标注