JSON的C代码示例

简介: JSON的C代码示例

柳鲲鹏

以前用json,因为方便都指定子串,所以没有用到库。这次还是使用公用库,也许内容复杂。

其实要讲解析,这个正是吾最擅长的。


  • 产生json
int main(int argc, char* argv[])
{
    int count = 0;
    while (count < 10)
    {
        char message[128];
        usleep(100*1000);
        count ++;
        struct json_object *json = json_object_new_object();
        sprintf(message, "value %d", count);
        json_object_object_add(json, "text", json_object_new_string(message));
        json_object_object_add(json, "int",  json_object_new_int(count));
        struct json_object *array = json_object_new_array();
        sprintf(message, "array %d", count);
        json_object_array_add(array, json_object_new_string(message));
        sprintf(message, "array %d", count*2);
        json_object_array_add(array, json_object_new_string(message));
        json_object_object_add(json, "array", array);
        char *string = json_object_to_json_string(json);
        //mqtt_publish(LOCAL_IP, string);
    }
    return 0;
}
  • 解析json
/**
 可以递归输出。
 不过并无必要,需要什么获取什么。
 */
static void mqtt_json_print(const char *sname, const json_object * pval)
{
    enum json_type type;
    if (NULL == pval)
    {
        return;
    }
    /*
    json_type_null,
    json_type_boolean,
    json_type_double,
    json_type_int,
    json_type_object,
    json_type_string,*/
    type = json_object_get_type(pval);
    switch(type)
    {
        case json_type_string:
            printf("Key:%s  value: %s\n", sname, json_object_get_string(pval));
            break;
        case json_type_int:
            printf("Key:%s  value: %d\n", sname, json_object_get_int(pval));
            break;
        case json_type_array:
            break;
        default:
            break;
    }
    return;
}
static void  mqtt_json_get_print(json_object * jobj, const char *sname)
{
    json_object *pval = json_object_object_get(jobj, sname);
    if (NULL != pval)
    {
        mqtt_json_print(sname, pval);
    }
    return;
}
static int mqtt_msgarrvd(void *context, char *topicName, int topicLen, MQTTClient_message *message)
{
    char* payloadptr = (char*)message->payload;
    payloadptr[message->payloadlen] = 0;
    GH_LOG_INFO("topic=%s, msg=%s, size=%d", topicName, payloadptr, message->payloadlen);
    json_object *parsed_object= json_tokener_parse(payloadptr);
    //json_object_object_get_ex(parsed_object, "text", &value);
    mqtt_json_get_print(parsed_object, "text");
    json_object_object_foreach(parsed_object, key, value)
    {
        mqtt_json_print(key, value);
    }
    MQTTClient_freeMessage(&message);
    MQTTClient_free(topicName);
    return MQTT_MSG_PROCESSED;
}
相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
15天前
|
JSON API 数据格式
Amazon商品详情API,json数据格式示例参考
亚马逊商品详情API接口返回的JSON数据格式通常包含丰富的商品信息,以下是一个简化的JSON数据格式示例参考
|
24天前
|
JSON API 数据格式
店铺所有商品列表接口json数据格式示例(API接口)
当然,以下是一个示例的JSON数据格式,用于表示一个店铺所有商品列表的API接口响应
|
1月前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索json数据格式示例(API接口)
拍立淘按图搜索API接口为电商平台和购物应用提供了强大的图像搜索功能,能够显著提升用户的购物体验和搜索效率。开发者可以根据自己的需求调用此接口,并处理返回的JSON格式数据来展示推荐商品
|
14天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
1月前
|
JSON API 数据格式
商品详情数据JSON格式示例参考(api接口)
JSON数据格式的商品详情数据通常包含商品的多个层级信息,以下是一个综合多个来源信息的JSON数据格式的商品详情数据示例参考:
|
3月前
|
JSON 前端开发 API
【淘系】商品详情属性解析(属性规格详情图sku等json数据示例返回参考),淘系API接口系列
在淘宝(或天猫)平台上,商品详情属性(如属性规格、详情图、SKU等)是商家在发布商品时设置的,用于描述商品的详细信息和不同规格选项。这些信息对于消费者了解商品特性、进行购买决策至关重要。然而,直接通过前端页面获取这些信息的结构化数据(如JSON格式)并非直接暴露给普通用户或开发者,因为这涉及到平台的商业机密和数据安全。 不过,淘宝平台提供了丰富的API接口(如淘宝开放平台API),允许有资质的开发者或合作伙伴通过编程方式获取商品信息。这些API接口通常需要注册开发者账号、申请应用密钥(App Key)和秘钥(App Secret),并遵守淘宝的API使用协议。
|
3月前
|
JSON 数据格式 索引
【Azure Developer】Azure Logic App 示例: 解析 Request Body 的 JSON 的表达式? triggerBody()?
【Azure Developer】Azure Logic App 示例: 解析 Request Body 的 JSON 的表达式? triggerBody()?
|
6月前
|
存储 JSON 编解码
python之simplejson:JSON 编/解码器示例详解
python之simplejson:JSON 编/解码器示例详解
78 0
|
6月前
|
JSON 数据格式 索引
python之JMESPath:JSON 查询语法库示例详解
python之JMESPath:JSON 查询语法库示例详解
74 0
|
数据采集 JSON Java
stream流式JSON数据的特点及Java示例
流式JSON数据是指将JSON数据分成小块进行传输或处理的方式。与传统的JSON数据不同,流式JSON不需要将所有数据一次性读取到内存中进行处理,而是可以在数据流中逐个读取并处理。这种方式可以有效地避免内存溢出和性能问题,同时也可以使数据传输更加高效和可靠。流式JSON数据适用于许多场景,包括大数据处理、网络传输、实时数据处理和日志处理。在这些场景中,流式JSON可以显著提高数据处理和传输的效率和可靠性。同时,流式JSON还可以帮助开发人员更好地管理和处理JSON数据,并使得处理大量JSON数据变得更加容易和高效。
494 0
下一篇
无影云桌面