rapidjson 库基础使用

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":"哈利波特"}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值