数据通信之cjson

前端之家收集整理的这篇文章主要介绍了数据通信之cjson前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一 定义(网络)

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,可以把JSON的结构理解成无序的、可嵌套的key-value键值对集合,这些key-value键值对是以结构体或数组的形式来组织的。同一级的key-value键值对之间是用一个“,”(逗号)隔开,每个key-value键值对是由一个key后面紧接一个“:”(冒号),冒号后面是这个key对应的value。Key是一个word,由大小写字母、下划线及数字组成,可以由双引号封闭,也可以不加双引号;而value的取值集为:Number、Boolean(true或false)、null、String、Object及Array。

1、Number:数值,包括整形数与浮点数,如:123、0.83、-2.7e10。

2、String:字符串,是以双引号封闭起来的一串字符,使用反斜杠来转义,如:\\、\n等,如:”abc”。

3、Object:对象,也可理解成一个结构体,是以一对大括号封闭起来的无序的key-value键值对集合,例如:{name:"Susan",age:27,birthday:{year:1984,month:2,day:11}};也可以写成:{"name":"Susan","age":27,"birthday":{"year":1984,"month":2,"day":11}};

4、Array:数组,JSON的数组是一个以中括号封闭起来的value的集合,即数组内的各个成员的数据类型可以不一样,每个value之间是由一个“,”(逗号)隔开,例如:[123,abc,false,{name:mj}];

二 举例

首先需要构思我们需要发送的cjson字串应该包括哪些信息。

想发送cjson字串:

{"Type":"ModelOperation","Bus":"001310220002","Address":"4104","Source":"Web","DevType":"SmartSocketDev","Operation":"SwitchAction","Argument":{"SwitchAction":"Open"}} ---字符串①

解析格式如下:

{
    "Type": "ModelOperation","Bus": "001310220002",//总线桥地址
    "Address": "4104","Source": "Web","DevType": "SmartSocketDev",//设备类型为智能插座
    "Operation": "SwitchAction",//操作动作
    "Argument": {
        "SwitchAction": "Open" //在当前对象中嵌套一个Argument_Json_Object
    }
}


代码

cJSON *UDP_Json_Object      = cJSON_CreateObject();
cJSON *Argument_Json_Object = cJSON_CreateObject();
if((UDP_Json_Object == NULL)||(Argument_Json_Object == NULL))
{
   return NULL;
}
cJSON_AddStringToObject(UDP_Json_Object,"Type","ModelAttrsAcquisition");
cJSON_AddStringToObject(UDP_Json_Object,"Bus","001310220002");
cJSON_AddStringToObject(UDP_Json_Object,"Address","4104");
cJSON_AddStringToObject(UDP_Json_Object,"Source","Web");
cJSON_AddStringToObject(UDP_Json_Object,"DevType","SmartSocketDev");
Ctrl_Json_Add(UDP_Json_Object,Argument_Json_Object,"SwitchAction","Open");
char *out = NULL;
out = cJSON_PrintUnformatted(UDP_Json_Object);//将json对象转换成一个不带任何格式的字符串,无回车。见字符串①
cJSON_Delete(Argument_Json_Object);//使用之后必须释放
cJSON_Delete(UDP_Json_Object);
return out;

猜你在找的Json相关文章