首页 > 其他分享 >cJSON:构建JSON

cJSON:构建JSON

时间:2024-07-02 21:32:11浏览次数:11  
标签:cJSON json JSON 构建 str AddItemToObject NULL root

使用cJSON库构建比较简单的JSON类型:

create_json.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include "cJSON.h"


static int create_json_type_1(void)
{
    char *json_str = NULL;
    cJSON *root = NULL;
    root = cJSON_CreateObject();
    cJSON_AddItemToObject(root, "name", cJSON_CreateString("ZhangSan"));
    cJSON_AddItemToObject(root, "age", cJSON_CreateNumber(18));

    json_str = cJSON_Print(root);
    printf("%s\n\n", json_str);

    if (NULL != json_str)
        free(json_str);
    if (NULL != root)
        cJSON_Delete(root);

    return 0;
}

static int create_json_type_2(void)
{    
    char *json_str = NULL;
    cJSON *root = NULL;
    cJSON *score = NULL;

    score = cJSON_CreateObject();
    cJSON_AddItemToObject(score, "name", cJSON_CreateString("LiSi"));
    cJSON_AddItemToObject(score, "math", cJSON_CreateNumber(100));
    cJSON_AddItemToObject(score, "english", cJSON_CreateNumber(90));

    root = cJSON_CreateObject();
    cJSON_AddItemToObject(root, "score", score);

    json_str = cJSON_Print(root);
    printf("%s\n\n", json_str);

    if (NULL != json_str)
        free(json_str);
    if (NULL != root)
        cJSON_Delete(root);

    return 0;
}

static int create_json_type_3(void)
{
    int count = 0;
    char *json_str = NULL;
    cJSON *root = NULL;
    cJSON *fruit = NULL;
    const char *array[] = {
        "apple", "banana", "orange", "peach"
    };


    count = sizeof(array) / sizeof(array[0]);
    fruit = cJSON_CreateStringArray(array, count);

    root = cJSON_CreateObject();
    cJSON_AddItemToObject(root, "fruit", fruit);

    json_str = cJSON_Print(root);
    printf("%s\n\n", json_str);

    if (NULL != json_str)
        free(json_str);
    if (NULL != root)
        cJSON_Delete(root);

    return 0;
}

static int create_json_type_4(void)
{
    char *json_str = NULL;
    cJSON *root = NULL;
    cJSON *item1 = NULL;
    cJSON *item2 = NULL;
    cJSON *language = NULL;

    item1 = cJSON_CreateObject();
    cJSON_AddItemToObject(item1, "Chinese", cJSON_CreateNumber(100));

    item2 = cJSON_CreateObject();
    cJSON_AddItemToObject(item2, "English", cJSON_CreateNumber(100));

    language = cJSON_CreateArray();
    cJSON_AddItemToArray(language, item1);
    cJSON_AddItemToArray(language, item2);

    root = cJSON_CreateObject();
    cJSON_AddItemToObject(root, "language", language);

    json_str = cJSON_Print(root);
    printf("%s\n\n", json_str);

    if (NULL != json_str)
        free(json_str);
    if (NULL != root)
        cJSON_Delete(root);

    return 0;
}

int main(int argc, char *argv[])
{
    /* 形式一 */
    create_json_type_1();

    /* 形式二 */
    create_json_type_2();

    /* 形式三 */
    create_json_type_3();

    /* 形式四 */
    create_json_type_4();

    return 0;
}
  • 形式一

  • 形式二

  • 形式三

  • 形式四

标签:cJSON,json,JSON,构建,str,AddItemToObject,NULL,root
From: https://www.cnblogs.com/caojun97/p/18280500

相关文章

  • logstash 收集 http POST请求中的json日志时,字段冲突问题
    https://www.elastic.co/guide/en/logstash/current/plugins-inputs-http.html修改vim/etc/logstash/logstash.ymlpipeline.ecs_compatibility:disabled不关闭的话,会自动添加这几个字段可能会与json中的同名字段冲突{"@version"=>"1","user_agent"......
  • 构建可扩展性强的返利App后端服务架构
    构建可扩展性强的返利App后端服务架构大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在构建返利App的后端服务时,可扩展性是一个至关重要的考量因素。随着用户量的增长和业务的扩展,系统需要能够灵活地调整和扩......
  • maven构建断网springboot
    maven构建断网springboot我的依赖仓库(本地电脑,记住常用的那几个)org.springframework.boot下的spring-boot-starter-parentspring-boot-starter-web/Users/lin/Documents/repo使用maven进行创建空白项目在pom.xml中补全parent类parent groupId artifactId vers......
  • fastjson低版本反序列化bug/设计缺陷记录
    1.问题场景 _id正常的赋值相同的代码我们继续跑 _id的值被反序列化到id上了???相同的代码,跑出不一样的反序列化结果,amazing2.问题探究2.1List<FieldInfo>反序列化时会先创建一个List<FieldInfo>每一个FieldInfoList<FieldInfo>的填充方式:遍历Methods[],取出所有的set......
  • TG智能客服机器人开发指南/自动化客户服务机器人源码构建手册
    一、引言在数字化时代,提供高效、快速的客户服务是企业赢得客户满意度和忠诚度的关键。TG智能客服机器人作为一种新型的客户服务工具,能够24小时不间断地为客户提供服务,极大地提升了客户服务的效率和质量。本文将为您提供一份详尽的TG智能客服机器人开发指南和自动化客户服务机......
  • 构建工程化:建立平台化工程体系
    一、功能描述工程化体系主要是解决能够统一进行打包的问题,故需要对整体进行描述1.1、子项目描述1.1.1、配置管理对于每一个子项目而言,需要有专门的配置管理目录,目录的建议组建方式为conf/defalut和conf/local,其中defalut目录下存放组建默认的启动时配置,local为客户环境......
  • 009-GeoGebra基础篇-构建正六边形
    继续巩固一下基础,本篇我们来做一个正六边形目录一、成品展示二、涉及内容三、做图步骤1.绘制一个以A点为圆心过B点的圆circle1;2.以B点为圆心过A点绘制另外一个圆circle2;3.绘制两个圆的交点,得到顶点C和D;4.以C点为圆心绘制过A点的圆circle3;5.获取circle3和circle1的......
  • Java开发者LLM实战——使用LangChain4j构建本地RAG系统
    1、引言由于目前比较火的chatGPT是预训练模型,而训练一个大模型是需要较长时间(参数越多学习时间越长,保守估计一般是几个月,不差钱的可以多用点GPU缩短这个时间),这就导致了它所学习的知识不会是最新的,最新的chatGPT-4o只能基于2023年6月之前的数据进行回答,距离目前已经快一年的时间,如......
  • 聊聊gitlab ci如何构建以时间为版本号的docker镜像
    前言最近朋友他们部门有部分内部项目,打算用gitlabci来做项目持续集成部署,他们有个需求,构建docker镜像的时候,版本需要是以当前时间作为版本。其格式为yyyymmddhhmm一开始朋友翻阅官方文档,发现gitlabci有个变量CI_COMMIT_TIMESTAMP,可以生成时间戳,他默认生成的格式是ISO-8601。就......
  • fastjson整理思路
    此处把常用的一些方法,简单做个记录。 做自动化时,我们发送一个请求,返回的是一个字符串。首先我们要把这个字符串转换为json对象  parseObject():将JSON字符串解析为Java对象。 Stringjson="{\"person\":{\"name\":\"Ivy\",\"age\":60}}";JSONO......