JsonCpp Documentation

                   JsonCpp Documentation
                       0.6.0-rc2
说明:
  1. 本文内容来自:http://jsoncpp.sourceforge.net/old.html
  2. 这是JsonCpp Documentation使用说明文档;
  3. 内容基本包括了JSON的基本操作。

一、Introduction
  JSON (JavaScript Object Notation) is a lightweight data-interchange format. It can represent integer, real number, string, an ordered sequence of value, and a collection of name/value pairs.
  JSON是一种一种轻量级的数据交换格式,它可以表示整数、实数、字符串值的有序序列、名称/值对的集合。

  Here is an example of JSON data:
  下面是一个JSON数据的例子

    // Configuration options
    // 配置选项
    {
        // Default encoding for text
        // 文本的默认编码
        "encoding" : "UTF-8",

        // Plug-ins loaded at start-up
        // 启动时加载的插件
        "plug-ins" : [      // 这里是一个数组
            "python",
            "c++",
            "ruby"
            ],

        // Tab indent size
        // Tab缩进字节
        "indent" : { "length" : 3, "use_space": true }
    }

二、Features

  1. read and write JSON document
    读写JSON文件
  2. attach C and C++ style comments to element during parsing
    在解析的数据中允许存在C、C++注释
  3. rewrite JSON document preserving original comments
    重写JSON文档保存原始评论

  Notes: Comments used to be supported in JSON but where removed for portability (C like comments are not supported in Python). Since comments are useful in configuration/input file, this feature was preserved.
  说明:注释用于支持JSON,但删除可移植性(C不支持评论在Python)。因为评论是有用的配置/输入文件,这个功能被保留

三、Code example

    Json::Value root;   // will contains the root value after parsing.
                        // root将保存解析数据的根节点
    Json::Reader reader;
    bool parsingSuccessful = reader.parse( config_doc, root );
    if ( !parsingSuccessful )   // 解析是否正确
    {
        // report to the user the failure and their locations in the document.
        std::cout  << "Failed to parse configuration\n"
                   << reader.getFormattedErrorMessages();
        return;
    }

    // Get the value of the member of root named ‘encoding‘, return ‘UTF-8‘ if there is no
    // such member.
    // 获取root中名称叫"encoding"成员的值,如果该成员不存在,那么就返回‘UTF-8‘
    // 这里演示的是get的使用方法
    std::string encoding = root.get("encoding", "UTF-8" ).asString();

    // Get the value of the member of root named ‘plug-ins‘, return a ‘null‘ value if
    // there is no such member.
    // 获取root中名称叫"plug-ins"成员的值,如果该成员不存在,那么就返回‘null‘
    // 这里演示的数组的使用方法
    const Json::Value plugins = root["plug-ins"];
    for ( int index = 0; index < plugins.size(); ++index )  // Iterates over the sequence elements.
       loadPlugIn( plugins[index].asString() );             // 迭代元素

    // 这里演示的是Json对象中的Json对象的使用方法
    setIndentLength( root["indent"].get("length", 3).asInt() );
    setIndentUseSpace( root["indent"].get("use_space", true).asBool() );

    // ...
    // At application shutdown to make the new configuration document:
    // Since Json::Value has implicit constructor for all value types, it is not
    // necessary to explicitly construct the Json::Value object:
    // 在应用程序关闭时,使新的配置文档
    // Json::Value对于所有的值类型有隐式构造函数,不需要显式构造Json::Value对象
    root["encoding"] = getCurrentEncoding();
    root["indent"]["length"] = getCurrentIndentLength();
    root["indent"]["use_space"] = getCurrentIndentUseSpace();

    Json::StyledWriter writer;
    // Make a new JSON document for the configuration. Preserve original comments.
    // 生成一个新的JSON配置文档,保留原来的评论
    // 这里保留原来的注释,个人感觉貌似是因为这里是直接使用root根节点,如果换了一个
    // Json::Value对象,应该就没有注释了。
    std::string outputConfig = writer.write( root );

    // You can also use streams.  This will put the contents of any JSON
    // stream at a particular sub-value, if you‘d like.
    // 直接从terminal获取值,可以任何的JSON值
    std::cin >> root["subtree"];

    // And you can write to a stream, using the StyledWriter automatically.
    // 最后使用StyledWriter作为输出流,写出Json对象到terminal
    std::cout << root;
时间: 2024-11-05 06:27:45

JsonCpp Documentation的相关文章

jsoncpp使用经验

jsoncpp判断某个字段是否存在的方法如下: 1)if (root["url"].type() != Json::nullValue) 2)if(value["sex"].isNull()) 注意事项 1)jsoncpp是一个c++使用的json库,通过重载中括号[]来实现json的语法,但是由于c++ 是一个强类型的语言,jsoncpp在实现过程中,使用了大量的断言,如果遇到类型不正确的 时候,就会强制断言,导致程序退出 例如,将如下的字符串传递给jsoncpp

解决编译apache出现的问题:configure: error: APR not found . Please read the documentation

今日编译apache时出错: #./configure --prefix……检查编辑环境时出现: checking for APR... no configure: error: APR not found .  Please read the documentation 解决办法: 1.下载所需软件包: apr以及apr-util官网 http://apr.apache.org/download.cgi wget http://apache.fayea.com//apr/apr-1.5.2.t

转 Centos下安装apahce的configure: error: APR not found. Please read the documentation解决办法

转自: http://www.cnblogs.com/Anker/p/3355573.html 今天从Apache官网上http://httpd.apache.org/下载httpd web服务器,由于我的虚拟机上之前安装过,我先yum remove httpd进行卸载,然后重新安装.我采用的是源码安装,先进行./configure --prefix=/usr/local/apahce  --enable-so ,提示以下错误: configure: error: APR not found.

jsoncpp 解码编码 中文为空 乱码问题

在此,仅对自己出现的问题做个总结,没想到能帮到大家. 本地C++桌面程序,用jsoncpp 对json和服务端进行通信,静态库编译不能用,故采用的源码拷贝进行调用 服务端 用php和客户端进行通信 服务端json 解码和编码的两个函数 json_encode json_decode 如果使用在使用json_encode的中的字符串中有中文的话,有可能会出现,编码后,字符串为空, 这个我遇到的一个原因是 php脚本文件的类型是ansi 而不是utf8 ,所以用txt文本编辑器,将脚本另存为 utf

发现不错的cache系统Cache Manager Documentation

http://cachemanager.net/Documentation/Index/cachemanager_architecture https://www.nuget.org/packages/CacheManager.Web/ https://github.com/MichaCo/CacheManager/tree/master/samples/CacheManager.Samples.Mvc

NVIDIA Documentation

NVIDIA Documentation NVIDIA官网提供四大类的帮助文档,其中本文以这四类为基础提供有可能在高性能计算上使用的library. 1. CUDA Toolkit Documentation 1.1 AmgX AmgX提供了一个简单路径来加速对英伟达 GPU 核心solver技术.它是一种高性能.以及包括柔性 state-of-the-art 函数库求解器的组合系统 , 用户可以轻松地构建复杂的嵌套迭代法求解等.AmgX库提供很多优化方法,灵活地选择solver的构造方法,而且

Qt jsoncpp 对象拷贝、删除、函数调用 demo

/***************************************************************************************************** * Qt jsoncpp 对象拷贝.删除.函数调用 demo * 声明: * 本程序主要就是为了验证jsoncpp中Json::Value对象中的append.等号赋值是拷贝内容,还是赋值指针, * 就测试而言,从目前的情况来看应该是拷贝内容,在下面checkAndRemoveAppName(

jsoncpp用法通俗易懂

刚工作不久,最近遇到一个要解析一个web服务器发过来的json格式的文件,文件如下: { "global": { "renew": "true", "serverurl": "192.168.1.100:31208/opinfo/", "frequency": "60" }, "auth": { "enable": "

OpenCASCADE Documentation System

OpenCASCADE Documentation System [email protected] Abstract. Doxygen is the de facto standard tool for generating documentation from annotated C++ sources, but it also supports other popular programming languages. You can also use doxygen for creatin