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;
}

输出结果:

 

posted @ 2018-08-13 11:58  黑色幽默2018  阅读(31649)  评论(0编辑  收藏  举报