gpt4 book ai didi

c++ - 使用 boost json 读取 json 消息

转载 作者:搜寻专家 更新时间:2023-10-31 01:45:57 27 4
gpt4 key购买 nike

我正在尝试使用带有属性树的 boost json 来解码 json 消息。我只对检查消息中是否包含“mykey”感兴趣,如果是,则获取相应的值。
我有点迷失在 boost 文档中,我试图查看解析如下消息的实际代码是什么。

{
// some values
"mykey": [
{
"var1": "value1_str",
"var2" : "value2"
}
]
// some other values
}

最佳答案

我不知道 JSON 的 Boost ptree。我试过了,但它似乎……非常笨重。

这是一个基于 RFC 的简单 JSON 解析器,由 Spirit 制作:https://github.com/sehe/spirit-v2-json/tree/q21356666

您可以将它用于您的用例,例如 test.cpp

#include <vector>
#include "json.hpp"

struct X {
static X from_json(JSON::Value const& v);

std::string var1;
double var2;
};

int main()
{
auto doc = as_object(JSON::parse(
"{\n"
" // some values\n"
" \"mykey\": [\n"
" {\n"
" \"var1\": \"value1_str\",\n"
" \"var2\" : 3.14\n"
" }\n"
" ]\n"
" // some other values\n"
"}\n"
));

if (doc.has_key("mykey"))
{
X data = X::from_json(doc["mykey"]);
std::cout << "X.var1: " << data.var1 << "\n";
std::cout << "X.var2: " << data.var2 << "\n";
}

std::cout << "doc: " << doc << "\n";
std::cout << "doc[\"mykey\"]: " << doc["mykey"] << "\n";
}

X X::from_json(JSON::Value const& v)
{
X result;
auto& o = as_object(as_array(v)[0]);
result.var1 = as_string(o["var1"]);
result.var2 = as_double(o["var2"]);

return result;
}

输出:

X.var1: value1_str
X.var2: 3.14
doc: {"mykey":[{"var1":"value1_str","var2":3.14}]}
doc["mykey"]: [{"var1":"value1_str","var2":3.14}]

周围还有其他 json 库。我建议您选择一个适合您需要的。

关于c++ - 使用 boost json 读取 json 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21356666/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com