• Linux C中对json格式数组数据的生成与解析


    在网络通信中,数据经常被做成json格式的来进行传输。那么我们怎么在linux系统中去做json格式的数据呢?怎么将接收到的json格式的数据解析出来呢?

    1、linux json库的安装

    (1)下载json-c源码包

    (2)解压json-c的源码包

    Tar -xvf json-c-0.10.tar.gz

    (3)配置成X86平台json包

    ./configure --prefix=/usr

    (4)编译

    Make

    (5)安装

    Sudo make install

    2、json库中常用的函数接口

    ----------------生成json格式的数据常用函数接口-----------------

    (1)创建一个空的json对象

    Struct json_object *obj = json_object_new_object();

    (2)以key-value的形式添加json对象的成员

    Value值是int类型:key值是“temp”,value值是20

    json_object_object_add(obj,temp”,json_object_new_int(20));

    Value值是string类型:key值是“name”,value值是”mm”

    json_object_object_add(obj,name”,json_object_new_string(“mm”));

    (3)将json对象内容,转成json格式的字符串

    Unsigned char *json_string = json_object_to_json_string(obj);

    --------------解析json格式的数据常用函数接口------------------

    (1)将json格式的字符串转成json对象

    Struct json_object new_obj = json_tokener_parse(json_string);

    (2)根据指定对象的成员名,获取这个成员对象的json对象

    Struct json_object *object = json_object_object_get(new_object);

    (3)根据key值取得相应的value值

    Value值为int:

    Json_object_get_int(object);

    Value值为string:

    Json_object_get_string(object);

    3、对于比较简单的json格式的数据,我们用到上面的函数接口就可以完成json格式数据的制作和解析。

    4、假如碰到比较复杂的json数组格式的数据,我们又该怎么去制作和解析呢?

    示例说明:{

    "jporder":

    [

    { "jdevice": 1, "jppaynum": 1 },

    { "jdevice": 2, "jppaynum": 2 }

    ]

    }

    分析该数据的组成:

    1、key值为”jporder”,与其相对应的value值是一个数组[ { "jdevice": 1, "jppaynum": 1 }, { "jdevice": 2, "jppaynum": 2 } ]

    2、数组的每个成员都是两对json对象

    数组成员1:{ "jdevice": 1, "jppaynum": 1 }

    数组成员2:{ "jdevice": 2, "jppaynum": 2 }

    3、每个json对象都是由key_value组成

    具体的数据生成和解析方法如下:

    数据生成部分:

    数据解析部分:

    运行结果如下:

    嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

    无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。(点击找小助理领取)

  • 相关阅读:
    linux 系统redis常用命令
    安装并创建一个react项目
    【web前端期末大作业】基于html+css+javascript+jquery技术设计的音乐网站(44页)
    【C++】特殊类设计
    基于人工智能与边缘计算Aidlux的工业表面缺陷检测
    如何分析Activity被relaunch原因
    Halcon手眼标定
    【记录】IntelliJ IDEA实用的插件
    图卷积神经网络层的pytorch复现
    【玩转C语言】第一讲--->C语言概念
  • 原文地址:https://blog.csdn.net/m0_70888041/article/details/128111955