通常报文格式一般分为两种,一种是报文类型标识,长度,校验。还有一种是报文类型标识,结束标识,校验。
第一种有利于接收方进行报文解析,应为首先能知道将要接收的报文长度。但是第一类报文的扩展性,灵活性和嵌套性比较差,类似tcpip协议头等传统协议。
第二种报文对于接收方来说比较不好处理,需要不停的判断结束符和校验,但是报文灵活,可以随意嵌套,类似于json和xml语言。
json或者xml其实质是不同类型的对象组成的多叉树,在c语言用的链表数据结构构建。
json new创建的要手动put,put会递归的put一遍子树,get的要手动put,因为会增加引用计数。
json_object_object_add会先删除同key的元素,再添加key的元素。
json_c库的一些对象:
struct json_object
{
enum json_type o_type; //类型
json_object_delete_fn *_delete; //释放函数
json_object_to_json_string_fn *_to_json_string; //json转str函数
int _ref_count; //引用计数
struct printbuf *_pb; // 打印buf
union data { //真正的数据 联合体
boolean c_boolean; //bool型
double c_double; //double 型
int64_t c_int64; //int64型
struct lh