C/C++由字符串转JSON/JSON转字符串/数组解析/数组添加
字符串转成JSON(其中str为字符串)
Json::Reader Reader; Json::Value DevJson; Reader.parse(str,DevJson); int dev_id = DevJson["dev_id"].asInt(); int index = DevJson["index"].asInt();
JSON转字符串(其中DevStr为字符串)
Json::Value DevJson = DevsJson[i]; std::string DevStr = DevJson.toStyledString(); printf("Msg:%s", DevStr.c_str());
JSON数组解析:
Json::Reader Reader; Json::Value DevsJson; Reader.parse(MsgStr, DevsJson); int siNum = DevsJson.size(); for(int i=0; i < siNum; i++) { Json::Value DevJson = DevsJson[i]; std::string DevStr = DevJson.toStyledString(); printf("Msg:%s", DevStr.c_str()); }
数组添加:
Json::Value root; Json::Value person; person["name"] = "hello world"; person["age"] = 100; root.append(person);
结果:[{"age":100,"name":"hello world"}]
---------------------------------------------------
// MyTest.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "iostream" #include "time.h" #include "map" #include <windows.h> #include <sstream> #include <list> #include "json\json.h" #include "stdint.h" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { Json::Value value; uint32_t ssrc1 = 5305490; value["ssrc1"] = ssrc1; uint32_t ssrc2 = 2152748638; value["ssrc2"] = ssrc2; std::string body = value.toStyledString(); cout << body << endl; Json::Reader reader; Json::Value data; reader.parse(body, data, false); if (data.isMember("ssrc1")) { cout << "ssrc1"; if (data["ssrc1"].isInt()) cout << " is Int" << endl; if (data["ssrc1"].isUInt()) cout << " is UInt" << endl; } if (data.isMember("ssrc2")) { cout << "ssrc2"; if (data["ssrc2"].isInt()) cout << " is Int" << endl; if (data["ssrc2"].isUInt()) cout << " is UInt" << endl; } uint32_t ssrc11 = data["ssrc1"].asUInt(); uint32_t ssrc21 = data["ssrc2"].asUInt(); cout << "ssrc11:" << ssrc11 << endl; cout << "ssrc21:" << ssrc21 << endl; system("pause"); return 0; }
输出结果: