初次使用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();// 獲取浮點數據

        ........

  }

相關文章
相關標籤/搜索