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一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
11月前
|
数据采集 JSON Java
stream流式JSON数据的特点及Java示例
流式JSON数据是指将JSON数据分成小块进行传输或处理的方式。与传统的JSON数据不同,流式JSON不需要将所有数据一次性读取到内存中进行处理,而是可以在数据流中逐个读取并处理。这种方式可以有效地避免内存溢出和性能问题,同时也可以使数据传输更加高效和可靠。流式JSON数据适用于许多场景,包括大数据处理、网络传输、实时数据处理和日志处理。在这些场景中,流式JSON可以显著提高数据处理和传输的效率和可靠性。同时,流式JSON还可以帮助开发人员更好地管理和处理JSON数据,并使得处理大量JSON数据变得更加容易和高效。
297 0
|
JSON C# 数据格式
C#编程-101:读写Json文件示例
C#编程-101:读写Json文件示例
182 0
|
JSON 前端开发 .NET
如何构建ASP.NET MVC4&JQuery&AJax&JSon示例
背景:   博客中将构建一个小示例,用于演示在ASP.NET MVC4项目中,如何使用JQuery Ajax。 步骤: 1,添加控制器(HomeController)和动作方法(Index),并为Index动作方法添加视图(Index.cshtml),视图中HTML如下: 输入你的姓名: 输入你的年龄: 提交 清空   视图中包含两个文本框,分别用来输入名字和年龄,包含连个按钮,分别用来提交信息和清空文本框的内容,同时包含一个段落,用来显示Ajax返回的数据信息。
1049 0
|
JSON 数据格式 API
JSON简介及具体的JSON消息示例
在互联网软件前端与后台进行消息交互的过程中,需要有一种标准的数据交换格式供前后端采用。在众多的数据交换格式中,JSON(JavaScript Object Notation,JS 对象标记)是应用得比较广泛的,它采用完全独立于编程语言的文本格式来存储和表示数据。
1252 0
|
JSON JavaScript 数据格式
|
Web App开发 JSON JavaScript
js与json交互理论和示例
                                                                                                                                                                                                   
1618 0
|
JSON Android开发 数据格式
Android 下使用 JSON 实现 HTTP 请求,外加几个示例!
不得不说,JSON 格式的确是非常美妙的,速度快而且简化了很多操作在 Android 下,Android SDK 已经为我们封装好了整个与 JSON 有关的操作,使用非常方便以下就是一个标准的 JSON 请求的实现过程:   [java] view plaincopyprint?  ...
1254 0