• 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。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。(点击找小助理领取)

  • 相关阅读:
    Web3.0究竟是什么?
    HDFS 块重构和RedundancyMonitor详解
    番茄小说推文和番茄短剧推广授权怎么申请
    【JDK 8-集合框架进阶】6.1 parallelStream 并行流
    苦瓜功能稻降碳90% 国稻种芯-517:何登骥水稻旱作节水80%
    git工具的安装及使用
    什么是RAM?如何清理电脑RAM?
    快速理解docker的整体逻辑
    【Linux权限管理】文件:毁灭我与我无关
    Python基于宽度优先搜索的程序综合-SyGus求解器
  • 原文地址:https://blog.csdn.net/m0_70888041/article/details/128111955