JSONify строка в C ++ - PullRequest
       2

JSONify строка в C ++

2 голосов
/ 22 февраля 2011

В моей программе мне нужно вывести простые данные JSON.Я посмотрел на многие библиотеки для JSON в c ++, они слишком сложны для моей задачи.Есть какой-то более простой способ, как создать JSON-безопасную строку из любой строки c ++?

string s = "some potentially dangerous string";
cout << "{\"output\":\"" << convert_string(s) << "\"}";

Как будет выглядеть функция convert_string (string s)?

спасибо

1 Ответ

4 голосов
/ 22 февраля 2011

Если ваши данные в формате UTF-8, согласно строковому графику на http://json.org/:

#include <sstream>
#include <string>
#include <iomanip>
std::string convert_string(std::string s) {
    std::stringstream ss;
    for (size_t i = 0; i < s.length(); ++i) {
        if (unsigned(s[i]) < '\x20' || s[i] == '\\' || s[i] == '"') {
            ss << "\\u" << std::setfill('0') << std::setw(4) << std::hex << unsigned(s[i]);
        } else {
            ss << s[i];
        }
    } 
    return ss.str();
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...