json作为通信报文
来源:互联网 发布:淘宝破损补寄显示什么 编辑:程序博客网 时间:2024/05/22 14:09
通常报文格式一般分为两种,一种是报文类型标识,长度,校验。还有一种是报文类型标识,结束标识,校验。
第一种有利于接收方进行报文解析,应为首先能知道将要接收的报文长度。但是第一类报文的扩展性,灵活性和嵌套性比较差,类似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_table *c_object; //object 型
struct array_list *c_array; //list 型
struct { //string型
char *str;
int len;
} c_string;
} o;
};
//链式结构
struct lh_table {
/**
* Size of our hash.
*/
unsigned char size;
/**
* Numbers of entries.
*/
unsigned char count;
/**
* The first entry.
*/
struct lh_entry *head;
/**
* The last entry.
*/
struct lh_entry *tail;
struct lh_entry *table;
/**
* A pointer onto the function responsible for freeing an entry.
*/
lh_entry_free_fn *free_fn;
lh_hash_fn *hash_fn;
lh_equal_fn *equal_fn;
};
双向链表
struct lh_entry {
/**
* The key.
*/
void *k;
/**
* The value.
*/
const void *v;
/**
* The next entry
*/
struct lh_entry *next;
/**
* The previous entry.
*/
struct lh_entry *prev;
};
阅读全文
0 0
- json作为通信报文
- 在draongboard 410c上使用JSON进行通信交互——JSON报文解析
- C++使用Json作为数据包装格式的通信
- C++使用Json作为数据包装格式的通信
- C++ 使用 Json 作为数据包装格式的通信
- C++使用Json作为数据包装格式的通信
- java socket报文通信
- Python处理Json报文
- JSON报文返回格式
- java socket报文通信-报文的封装
- 【进程间通信】报文传递
- [PHP 作为iOS后台Json格式HTTP通信及文件上传的实现]
- 关于Java集成json,返回json报文
- json 作为配置文件
- json作为配置文件
- java socket报文通信(二)报文的封装
- java socket报文通信(二)报文的封装
- java socket报文通信(二)报文的封装
- IAR上部分UCOS软定时器无法启动的问题
- VirtualApp 中的进程
- 如何用Python+人工识别处理知乎的倒立汉字验证码
- 详解Vue组件系统
- 合纵连横(并查集)
- json作为通信报文
- 剑指Offer——编程题的Java实现(更新完毕……)
- Fruit HDU
- 首富王健林抛售万达资产的背后
- 深入解析JavaScript
- python中的platform模块获取平台信息
- Java 集合系列10之 HashMap详细介绍(源码解析)和使用示例
- 使用Restlet Client发送各种Get和Post请求
- C#之入门总结_数组及方法_04