chromium的数据序列化类Value

chromium除了Pickle这个轻量级的数据序列化类,还有个重量级的Value数据序列化类。因为chromium中很多地方用到json格式的数据,比如Preferences配置文件,所以需要一个很方便写入和读取json格式的设施。Value正是对应着能存储在json中的数据。 Value 所有json格式数据的基类,有空值、布尔、整数、浮点、字符串、二进制、字典、列表这8种类型。 其中,空值、布尔、整数、浮点都是FundamentalValue,std::string和string16都是StringValue。Value提供了静态方法从c++数据类型创建FundamentalValue和StringValue。其他类型有对应的子类方法创建。 Value也提供了获取所有类型的数据接口GetAs*。还有深拷贝和判断两个Value是否相当。 FundamentalValue和StringValue这两个类很简单,就是从c++的bool,int,double生成FundamentalValue。std::string和string16生成StringValue。还有一些获取值,深拷贝和比较相等等接口。 BinaryValue跟FundamentalValue类似,但是注意的是它不能被序列化成json。 ListValue相当于动态数组,可以存放很多同一类型的数据,提供了数据的增删改查接口。 最后一个是最复杂的DictionaryValue类。 DictionaryValue设置key可以通过<key>,还可以通过<key>.<key>.<key>.多级key的方式指定。如果多级key中有些可能不存在,它会自动创建DictionaryValue去填充。 还有一种设置key-value的Set*WithoutPathExpansion接口是不扩展解释.,这样就可以创建带.的key。 获取的值的接口类似,有Get*和Get*WithoutPathExpansion两种。 DictionaryValue提供了其他增删改查的接口,设置还可以合并两个DictionaryValue。 ValueSerializer 我们可以序列化和反序列化Value到json中。ValueSerializer只是一个接口,如果需要与json格式互操作,我们可以使用JSONFileValueSerializer。   ... Read More | Share it now!

chromium的数据序列化类Pickle

有时候我们在不同模块接口之间传递一些基本类型数据,但又不想去定义结构体去装这些基本类型的数据,因为这样未免有些小题大做。 chromium中提供了一个Pickle的数据序列化类,你依次写入一些基本数据,然后用PickleIterator依次再读出这些数据就行了。chromium中的进程间通信机制IPC底层也大量用到Pickle,久经考验。 用法非常简单,但是你要保证写入跟读取数据的顺序是一致的。 ... Read More | Share it now!