rapidjson 库基础使用

namespace rapidjson {
    // 定义 unicode 版本
    typedef GenericDocument > WDocument;
    typedef GenericStringBuffer > WStringBuffer;
    typedef Writer, UTF16<>> WStringBufferWriter;
    typedef GenericValue > 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":"哈利波特"}}

你可能感兴趣的:(rapidjson,基础使用)