namespace rapidjson {
// 定义 unicode 版本
typedef GenericDocument<UTF16<> > WDocument;
typedef GenericStringBuffer<UTF16<> > WStringBuffer;
typedef Writer<WStringBuffer, UTF16<>, UTF16<>> WStringBufferWriter;
typedef GenericValue<UTF16<> > WValue;
}
rapidjson::WStringBuffer jsonBuffer;
rapidjson::WStringBufferWriter jsonWriter(jsonBuffer);
jsonWriter.StartObject();
jsonWriter.Key(L"ary");
jsonWriter.StartArray();
jsonWriter.String(L"1");
jsonWriter.String(L"2");
jsonWriter.EndArray();
jsonWriter.Key(L"obj");
jsonWriter.StartObject();
jsonWriter.Key(L"name");
jsonWriter.String(L"哈利波特");
jsonWriter.EndObject();
jsonWriter.EndObject();
const WCHAR* text = jsonBuffer.GetString();
rapidjson::WDocument jsonDoc;
if (!jsonDoc.Parse(text).HasParseError())
{
// 解析数组
if (jsonDoc.HasMember(L"ary"))
{
auto& i = jsonDoc.FindMember(L"ary");
if (i != jsonDoc.MemberEnd())
{
rapidjson::WValue& arr = i->value;
if (arr.IsArray())
{
rapidjson::WValue::Array& array = arr.GetArray();
for (size_t i = 0; i < array.Size(); i++)
{
const wchar_t* path = array[i].GetString();
int wjr = 0;
}
}
}
}
// 解析对象
if (jsonDoc.HasMember(L"obj"))
{
auto& i = jsonDoc.FindMember(L"obj");
rapidjson::WValue& val = i->value;
if (val.HasMember(L"name"))
{
i = val.FindMember(L"name");
rapidjson::WValue& v1 = i->value;
if (v1.IsString())
{
const wchar_t* path = v1.GetString();
int wjr = 0;
}
}
}
}
// json字符串是
{"ary":["1","2"],"obj":{"name":"哈利波特"}}
04-19
1061
04-16
1243
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交