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
目录
相关文章
|
6月前
|
JSON JavaScript 前端开发
JavaScript原生代码处理JSON的一些高频次方法合集
JavaScript原生代码处理JSON的一些高频次方法合集
|
3月前
|
JavaScript 前端开发 编译器
10min代码快速熟悉Tsconfig.json配置文件
【8月更文挑战第16天】10min代码快速熟悉Tsconfig.json配置文件
88 2
|
2天前
|
JSON API 数据格式
Amazon商品详情API,json数据格式示例参考
亚马逊商品详情API接口返回的JSON数据格式通常包含丰富的商品信息,以下是一个简化的JSON数据格式示例参考
|
11天前
|
JSON API 数据格式
店铺所有商品列表接口json数据格式示例(API接口)
当然,以下是一个示例的JSON数据格式,用于表示一个店铺所有商品列表的API接口响应
|
1天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
24天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索json数据格式示例(API接口)
拍立淘按图搜索API接口为电商平台和购物应用提供了强大的图像搜索功能,能够显著提升用户的购物体验和搜索效率。开发者可以根据自己的需求调用此接口,并处理返回的JSON格式数据来展示推荐商品
|
1月前
|
JSON API 数据格式
低代码实现鸿蒙API返回JSON转TS及快速生成ArkUI代码
低代码实现鸿蒙API返回JSON转TS及快速生成ArkUI代码
35 0
低代码实现鸿蒙API返回JSON转TS及快速生成ArkUI代码
|
25天前
|
JSON API 数据格式
商品详情数据JSON格式示例参考(api接口)
JSON数据格式的商品详情数据通常包含商品的多个层级信息,以下是一个综合多个来源信息的JSON数据格式的商品详情数据示例参考:
|
3月前
|
JSON 前端开发 API
【淘系】商品详情属性解析(属性规格详情图sku等json数据示例返回参考),淘系API接口系列
在淘宝(或天猫)平台上,商品详情属性(如属性规格、详情图、SKU等)是商家在发布商品时设置的,用于描述商品的详细信息和不同规格选项。这些信息对于消费者了解商品特性、进行购买决策至关重要。然而,直接通过前端页面获取这些信息的结构化数据(如JSON格式)并非直接暴露给普通用户或开发者,因为这涉及到平台的商业机密和数据安全。 不过,淘宝平台提供了丰富的API接口(如淘宝开放平台API),允许有资质的开发者或合作伙伴通过编程方式获取商品信息。这些API接口通常需要注册开发者账号、申请应用密钥(App Key)和秘钥(App Secret),并遵守淘宝的API使用协议。
|
3月前
|
JSON API 数据格式
基于服务器响应的实时天气数据进行JSON解析的详细代码及其框架
【8月更文挑战第25天】这段资料介绍了一个使用Python从服务器获取实时天气数据并解析JSON格式数据的基本框架。主要分为三个部分:一是安装必要的`requests`库以发起HTTP请求获取数据,同时利用Python内置的`json`库处理JSON数据;二是提供了具体的代码实现,包括获取天气数据的`get_weather_data`函数和解析数据的`parse_weather_data`函数;三是对代码逻辑进行了详细说明,包括如何通过API获取数据以及如何解析这些数据来获取温度和天气描述等信息。用户需要根据实际使用的天气API调整代码中的API地址、参数和字段名称。