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()函数会抛出异常. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |