Анализ POCO POST-ответа на JSON с использованием Rapidjson

0

Я страдаю от перегорания с этими зазорами...

Я сделал запрос POST в C++ и получил следующую строку:

"{\"results\": [{\"sku\": \"peds-std-us\", \"url\": \"https://d2y247jlvj8usn.cloudfront.net/1/2014.06.12/upload test.xlsx\", \"version\": \"2014.06.12\"}]}"

Затем я обрабатываю его как документ rapidjson но получаю Parse Errors.

Document document;
if(document.Parse(results.c_str()).HasParseError()){
    return 1;
}

Я попытался удалить начало и конец ""

как это

{\"results\": [{\"sku\": \"peds-std-us\", \"url\": \"https://d2y247jlvj8usn.cloudfront.net/1/2014.06.12/upload test.xlsx\", \"version\": \"2014.06.12\"}]}

Та же проблема...

Кто-нибудь знает, в чем проблема?

  • 1
    Что произойдет, если вы удалите символы \ ? Есть ли ошибка анализа? Также проверить начальные и конечные " символы.
  • 0
    Спасибо человек, это то, что я сейчас пытаюсь ... но использование str.replace дает мне сбой
Показать ещё 3 комментария
Теги:
rapidjson
poco-libraries

1 ответ

0

Причина, по которой JSON не может быть проанализирована с помощью quickjson из-за всех избыточных задержек \ и первой и последней двойных кавычек ". Таким образом, я удаляю их следующим образом.

if (*resultsCopy.begin() == '"')
    if (*(resultsCopy.rbegin()) == '"')
        resultsCopy = resultsCopy.substr(1, resultsCopy.length() - 2);
    else
        resultsCopy = resultsCopy.substr(1, resultsCopy.length() - 1);
else if (*(resultsCopy.rbegin()) == '"')
    resultsCopy = resultsCopy.substr(0, resultsCopy.length() - 1);

char chars[] = "\\";
for (unsigned int i = 0; i < strlen(chars); ++i){
    resultsCopy.erase (std::remove(resultsCopy.begin(), resultsCopy.end(), chars[i]), resultsCopy.end());
}

Этот материал удаляет все \ и " в начале и в конце. И теперь это действительный JSON

Благодаря @Mooing Duck для этого

Вот чистый JSON

{"results": [{"sku": "peds-std-us", "url": "https://d2y247jlvj8usn.cloudfront.net/1/2014.06.12/upload test.xlsx", "version": "2014.06.12"}]}

Любые советы приветствуются

Ещё вопросы

Сообщество Overcoder
Наверх
Меню