Запись обычной строки C ++ в Rapid JSON приводит к строке с обратной косой чертой - PullRequest
0 голосов
/ 26 февраля 2020
string str = {"appId":"com.mymusic.app","Connectivity":True,"DistractionLevel":2,"display":True};

if(!str.empty())
{
StringBuffer bf;
PrettyWriter<StringBuffer> writer (bf);
writer.StartObject();
writer.Key("info"));
writer.String(str.c_str());
writer.EndObject();    
cout<<"request string is:" , (char *)bf.GetString());

}

cout печатает нижнюю строку с обратной стороны sh

{"info":"\"appId\":\"com.mymusic.app\",\"checkConnectivity\":True,\"driverDistractionLevel\":2,\"display\":True}"}

То, что я ожидал, это

{"info": {"appId":"com.mymusic.app","Connectivity":True,"DistractionLevel":2,"display":True} }

1 Ответ

1 голос
/ 26 февраля 2020

Вы используете неправильную функцию. Функция String добавит строковое значение к json -объекту, и в этом контексте ожидается экранирование от " до \".

Я думаю, что вы действительно хотите сделать, это добавить строка как json -под-объект. Из того, что я нашел в быстрой документации json, для этой функции нужно использовать RawValue .

...