初次使用json使用随记

json格式的解析不须要本身进行编码实现,已经有好多稳定的开源库可供使用;c++能够使用jsoncpp,c能够使用cjsonhtml

 

JsonCpp是一个开源库c++

下载地址:https://github.com/open-source-parsers/jsoncppgit

文档地址:http://open-source-parsers.github.io/jsoncpp-docs/doxygen/index.htmlgithub

 

json数据格式有{} []  :  " , 几种符号组成,以下:json

键值对  “key”:value  (说明:value但是数值 --》 “age”:18,也能够是字符串“string”--》“name”:“lilei”);数组

对象:一对{}即为一个对象,{}内能够是键值对的集合,也能够是数组[ ]ui

数组:一对[ ]既是一个数组,其概念相似于C语言中的数组,数组内能够是对象,也能够是键值对编码

下面是一个简单的例子,涵盖键值对,数组,对象htm

{对象

  "task":"persional-message-deal",

  "persional-msg":{

      "head-teacher":{

          "name":"hangmeimei",

          "sex":"female",

          "age":28,

          "hight":49.8

      },

      "students-msgs":[

           {

            "name":"xiaoming",

            "sex":"male",

            "age":12,

            "math-scores":90,

            "english-scores":110

          }, {

            "name":"xiaohong",

            "sex":"female",

            "age":12,

            "math-scores":90,

            "english-scores":110

          }

        ]

  }

 

}

解析:

  jsoncpp中两类 Value(json数据的存储,数据序列化和反序列化的方法),Reader(在字符串中对json数据的读取)

  重点:在处理json数据是如下两个对象是必需要建立的

       Json::Reader reader; 
       Json::Value root;

  处理流程:

  reader.parse(task_data->data, root)

  if(root.isobject){

                  std::string taskJsonString = root.toStyledString(); // 将json消息内容所有转换为字符串的格式(非必要操做)

      // 从json数据中获取须要的值

 

      Json::Value msg= root["persional-msg"];

      std::string teacher_name = msg["head_teacher"]["name"].asString(); // 获取字符串

      uint16 teach_age =  msg["head_teacher"]["age"].asUint(); // 获取整型据

      float teach_hight = msg["head_teacher"]["hight"].asDouble();// 获取浮点数据

        ........

  }

相关文章
相关标签/搜索