• JSON-C结构简介、使用


    官方站点介绍http://www.json.org

    JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming LanguageStandard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language  independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.



    JSON结构体例如以下:

    typedefstruct cJSON {

    structcJSON *next,*prev;

    struct cJSON *child;

    int type;

    char * valuestring;

    int valueint;

    double valuedouble;

    char *string;

    }cJSON;

    1cJSON存储的时候是採用链表存储的,其訪问方式像一颗树。每个节点能够有兄妹节点和子节点。通过next/prev指针来查找上一节点或者下一节点。每个节点通过child指针来訪问,进入下一层。

    2type一共同拥有7种取值,各自是:

    #define cJSON_False 0

    #define cJSON_True 1

    #define cJSON_NULL 2

    #define cJSON_Number 3

    #define cJSON_String 4

    #define cJSON_Array 5

    #define cJSON_Object 6

    得到其职:

    若是Number类型。则valueintvaluedouble中存储着值。若你期望的是int,则訪问valueint,若期望的是double。则訪问valuedouble,能够得到值。

    若是String类型的,则valuestring中存储着值,能够訪问valuestring得到值。

    若是多层嵌套的结构体要一层一层的进入,取值。

    实例:截取部分代码

    JSON结构体

    多层嵌套:

    {
        "glossary": {
            "title": "example glossary",
    "GlossDiv": {
                "title": "S",
    "GlossList": {
                    "GlossEntry": {
                        "ID": "SGML",
    "SortAs": "SGML",
    "GlossTerm": "Standard Generalized Markup Language",
    "Acronym": "SGML",
    "Abbrev": "ISO 8879:1986",
    "GlossDef": {
                            "para": "A meta-markup language, used to create markup languages such as DocBook.",
    "GlossSeeAlso": ["GML", "XML"]
                        },
    "GlossSee": "markup"
                    }
                }
            }
        }
    }

    cJSON *glossary = cJSON_GetObjectItem(json,"glossary");
    char *title = cJSON_GetObjectItem(glossary,"title")->valuestring;
    printf("title===%s ",title);

    上传文件里面有JSON可以使用的所有功能。

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    Tomcat 配置和springframework MVC配置简介
    Java监控工具、调优、调试辅助函数
    发布一个 Linux 下的 C++ 多线程库
    《程序中的日期与时间》第一章 日期计算
    《多线程服务器的适用场合》例释与答疑
    Muduo 网络编程示例之零:前言
    muduo 与 boost asio 吞吐量对比
    Muduo 网络编程示例之二:Boost.Asio 的聊天服务器
    计算机图书赠送
    muduo 与 libevent2 吞吐量对比
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4725340.html
Copyright © 2020-2023  润新知