c++生成json文件,c++对象转json

  c++生成json文件,c++对象转json

  一.摘要

  JSON的全称是Javascript Object Notation。顾名思义,JSON用于标记JavaScript对象。JSON的官方解释是:JSON是一种轻量级的数据传输格式。

  本文不详细介绍JSON本身的细节,旨在讨论如何使用C语言处理JSON。更多关于JSON的具体信息,请参考JSON官网:http://www.json.org。

  其次,本文选择C库来处理JSON。

  本文选择第三方库jsoncpp来解析JSON。CPP是一个著名的C jsoncpp解析库。JSON也是官网第一。

  下载地址:http://sourceforge.net/projects/jsoncpp.本文使用的jsoncpp版本是:0.5.0。

  三。Windows下jsoncpp的编译

  要使用第三方源代码库,第一步就是编译,把源代码文件编译成我们方便的动态链接库、静态链接库或者静态导入库[1]。

  Jsconcpp的JSON解析源文件分布在include/json,src/lib_json下。其实jsoncpp源代码并不多。为了方便产品管理,这里不需要编译成动态链接库或者静态导入库,所以我们选择使用静态链接库[2]。

  Jsoncpp已经处理得很完美了,所有编译选项都已经配置好了。可以通过打开makefiles/vs71/jsoncpp.sln开始编译(默认使用VS2003编译器,打开时可以直接按照VS2005提示进行操作)。

  四。jsoncpp使用的详细说明

  Jsoncpp主要包含三种类型的类:Value、Reader和Writer。CPP中的所有对象和类都在名称空间Json中命名,包括json.h

  Json:Value只能处理ANSI类型的字符串。如果C程序是用Unicode编码的,最好添加一个Adapt类来适应。

  1、价值

  Json:Value是jsoncpp中最基本也是最重要的类,用来表示各种类型的对象。jsoncpp支持的对象类型可以在Json:ValueType枚举值中找到。

  可以按如下方式使用Json:Value类:

  JSON:Value JSON _ temp;//临时对象,由下面的代码使用

  json_temp[name]=Json:Value(胡超);

  Json _ temp[ age ]=Json:Value(26);

  JSON:Value root;//表示整个json对象

  root[ key _ string ]=Json:Value( Value _ string );//创建一个新的键(名为:key_string)并分配字符串值:“value_string”。

  root[ key _ number ]=Json:Value(12345);//创建一个新的密钥(名为:key_number)并赋予其值12345。

  root[ key _ boolean ]=Json:Value(false);//创建一个新的Key(名为:key_boolean)并赋予bool一个值:false。

  root[ key _ double ]=Json:Value(12.345);//创建一个新的Key(名为:key_double)并赋予double值:12.345。

  root[ key _ object ]=Json _ temp;//创建一个新的Key(名为:key_object)并赋予json:Value对象一个值。

  根[key_array]。append( array _ string );//创建一个数组类型的新键(名为:key_array),并将第一个元素赋值为字符串:“array_string”。

  根[key_array]。追加(1234);//给数组key_array赋值,第二个元素是:1234。

  JSON:value type type=root . type();//获取根的类型,这里是objectValue的类型。

  注意:与C不同,JavaScript array可以是任何类型的值,所以jsoncpp也可以使用。

  以上用法已经可以满足大部分json应用。当然,jsoncpp还有一些其他的特性,比如设置注释、比较json大小、交换json对象等。这些都很容易使用。请你自己试试。

  2、作家

  说了Json:Value的用法,是时候检查一下刚刚赋值的内容了。只需检查json内容并使用Writer类。

  CPP的Json:Writer类是纯虚拟类,不能直接使用。这里我们使用Json:Writer的子类:Json:FastWriter,Json:StyledWriter,Json:StyledStreamWriter。

  顾名思义,用Json:FastWriter处理Json应该是最快的。让我们试一试。

  JSON:fast writer fast _ writer;

  STD:cout fast _ writer . write(root)STD:endl;

  输出是:

  {key_array:[array_string ,1234], key_boolean:false, key_double:12.3450, key_number:12345, key_object:{age:26, name :胡超 }, key_string:value_string}

  再次顾名思义,使用Json:StyledWriter就是格式化Json。我们来看看Json:StyledWriter是如何格式化的。

  JSON:styled writer styled _ writer;

  STD:cout styled _ writer . write(root)STD:endl;

  输出是:

  {

  key_array : [ array_string ,1234 ],

   key_boolean : false,

   key_double : 12.3450,

   key_number : 12345,

  key_object :

  年龄:26岁,

  姓名:胡超

  },

  键字符串:值字符串

  }

  3、读者

  Json:Reader用于阅读。确切地说,它是用来将字符串转换成Json:Value对象的。让我们看一个简单的例子。

  JSON:Reader Reader;

  Json:值json _ object

  const char * JSON _ document= {/ age/:26,/name/ : /胡超/ } ;

  如果(!reader.parse(json_document,json_object))

  返回0;

  STD:cout JSON _ object[ name ]STD:endl;

  STD:cout JSON _ object[ age ]STD:endl;

  输出是:

  胡超的

  26

  可以看到上面的代码已经解析出了json字符串。

  -

  [1]:使用第三方源代码最简单的方法是直接在项目中添加文件,但这不利于源代码和软件产品的管理,一般软件开发不建议使用。

  [2]:如果真的需要编译成动态链接库或者静态导入库,可以用VS新建一个项目属性,然后在项目-属性中设置。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • js把字符串转为json,json字符串转换成json对象
  • js把字符串转为json,json字符串转换成json对象,js 将json字符串转换为json对象的方法解析
  • json语法格式,json格式定义
  • json语法格式,json格式定义,Json格式详解
  • json格式数据类型,什么是JSON数据-其常见格式是什么-
  • json格式数据类型,什么是JSON数据-其常见格式是什么-,JSON 数据格式详解
  • json格式怎么写,json文件内容格式
  • json格式怎么写,json文件内容格式,json文件书写格式详解
  • json数组对象转化为json字符串,js把数组转化为json
  • json字符串转换成对象有哪几种方法,字符串转化为json的方法
  • json字符串转换成对象有哪几种方法,字符串转化为json的方法,JSON对象转化为字符串详解
  • json基础介绍与详细用法教程,json基础知识
  • json基础介绍与详细用法教程,json基础知识,JSON基础介绍与详细用法
  • json去掉反斜杠,json字符串中有反斜杠
  • json去掉反斜杠,json字符串中有反斜杠,详解json串反转义(消除反斜杠)
  • 留言与评论(共有 条评论)
       
    验证码: