加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使用卡萨布兰卡解析JSON数组

发布时间:2020-12-16 10:35:29 所属栏目:百科 来源:网络整理
导读:我试图阅读卡萨布兰卡的 JSON回复.发送的数据如下所示: {"devices":[ {"id":"id1","type":"type1"},{"id":"id2","type":"type2"}]} 有谁知道如何做到这一点?卡萨布兰卡教程似乎只关心创建这样的数组而不是从它们中读取. 解决方法 我们假设您将json作为http
我试图阅读卡萨布兰卡的 JSON回复.发送的数据如下所示:

{
"devices":[
  {"id":"id1","type":"type1"},{"id":"id2","type":"type2"}
]
}

有谁知道如何做到这一点?卡萨布兰卡教程似乎只关心创建这样的数组而不是从它们中读取.

解决方法

我们假设您将json作为http响应:

web::json::value json;
web::http::http_request request;

//fill the request properly,then send it:

client
.request(request)
.then([&json](web::http::http_response response)
{
    json = response.extract_json().get();
})
.wait();

请注意,这里没有进行错误检查,所以让我们假设一切正常(如果没有,请参阅Casablanca文档和示例).

然后可以通过at(utility :: string_t)函数读取返回的json.在你的情况下,它是一个数组(你要么知道或通过is_array()检查它):

auto array = json.at(U("devices")).as_array();
for(int i=0; i<array.size(); ++i)
{
     auto id = array[i].at(U("id")).as_string();
     auto type = array[i].at(U("type")).as_string();
}

通过这个,您可以获得存储在字符串变量中的json响应条目.

实际上,您还可能想要检查响应是否具有相应的字段,例如通过has_field(U(“id”)),如果是,通过is_null()检查条目是否为空 – 否则,as_string()函数会抛出异常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读