【问题标题】:std::string to rapidJson object conversionstd::string 到 rapidJson 对象的转换
【发布时间】:2026-01-12 21:40:02
【问题描述】:

我试图将一个 std::string 转换为以下格式的 rapidJson 对象

  { 
     "data":{

               "value": "AB1234"
            }
  }

我试过了

rapidjson::Document aJsonDocument;
aJsonDocument.SetObject();
rapidjson::Document::AllocatorType &aAllocator = aJsonDocument.GetAllocator();

rapidjson::Value aPsmJson(rapidjson::kStringType);
std::string aStr = "ABCDEF";
aPsmJson.SetString(aStr.c_str(), aAllocator);
aJsonDocument.AddMember("value", aPsmJson, aAllocator);

//jsonToString is a function to convert json document to string
std::string aInputJsonString = jsonToString(aJsonDocument);
std::cout << "Output: " << aInputJsonString ;

这是输出 {"值":"ABCDEF"}

【问题讨论】:

  • 我必须将 std::string 发送到 URI。标准字符串将包含像 { "data":{ "value": "AB1234" } } 这样的消息,所以我正在形成 json 对象并尝试将其转换为 std::string。
  • 那么,问题解决了吗?

标签: json string parsing stdstring rapidjson


【解决方案1】:

您忘记为"data" 创建一个Value

string s = "ABCDEF";
Document d(kObjectType);
Value data(kObjectType);
Value value;
value.SetString(s.c_str(), d.GetAllocator());
data.AddMember("value", value, d.GetAllocator());
d.AddMember("data", data, d.GetAllocator());

std::cout << jsonToString(d);

输出:

{
    "data": {
        "value": "ABCDEF"
    }
}

【讨论】:

    最近更新 更多