【问题标题】:json object in Poco is wrongPoco 中的 json 对象是错误的
【发布时间】:2018-03-23 11:22:07
【问题描述】:

我正在制作这样的 Json 对象:

Poco::JSON::Object obj;
obj.set("EncryptedKeyString", encryptedKey);
obj.set("EncryptedIVString", encryptedIV);
obj.set("EncryptedString", str_encrypted_base64);
obj.set("SignedDataString", signature);

然后像这样对其进行字符串化:

std::stringstream ss8;
obj.stringify(ss8);
std::ostream& o = session.sendRequest(req);
std::cout << ss8.str() << std::endl;

打印时结果是这样的

"EncryptedKeyString":"EWakRvh\/hY2oQ2Jburma\/jRzwrh

我不明白为什么要制作这些\,应该是这样的:

"EncryptedKeyString":"EWakRvh/hY2oQ2Jburma/jRzwrh

有谁知道如何解决这个问题?

【问题讨论】:

  • @M.M 对不起,它自动删除了转义..请再看一遍:)
  • 为什么要打印转义字符?

标签: c++ poco-libraries


【解决方案1】:

RFC4627, 2.5. Strings:

任何字符都可以转义。

...

char = unescaped /
                escape (
                    %x22 /          ; "    quotation mark  U+0022
                    %x5C /          ; \    reverse solidus U+005C
                    %x2F /          ; /    solidus         U+002F
                    %x62 /          ; b    backspace       U+0008
                    %x66 /          ; f    form feed       U+000C
                    %x6E /          ; n    line feed       U+000A
                    %x72 /          ; r    carriage return U+000D
                    %x74 /          ; t    tab             U+0009
                    %x75 4HEXDIG )  ; uXXXX                U+XXXX

另见this answer

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 2015-05-09
    • 2014-04-13
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    相关资源
    最近更新 更多