使用REST API的JSON分阶段
JSON phasing with REST API
我正试图在REST API的JSON功能#include <cpprest/json.h>
的JSON文件中读取第二级
我需要从以下JSON中获取名称字段:
{"desc":"","id":"57681f5dc4864c821cc73bfa","lists":[{"id":"576973346263056c88cfe845","name":"Board info"},{"id":"57681f5dc4864c821cc73bfb","name":"Misc"},{"id":"576978294972d812e4a91580","name":"thing"},{"id":"57681fdc228443c3306cc762","name":"thing2"},{"id":"5768200b1fbf41dd2c974052","name":"thing3"},{"id":"57681feb72ca90abb3afe170","name":"thingy"},{"id":"57681f5dc4864c821cc73bfc","name":"meep"},{"id":"57681f5dc4864c821cc73bfd","name":"BannedWordsPhrases"},{"id":"57681fba60fdfbf576abaece","name":"Errors"}],"name":"READER"}
(让我们把这个文件命名为JSON1)我可以得到JSON1["lists"],但不能得到JSON1["lists"]["name"]。
下面是我的代码:#include "cpprest/json.h" //how I am importing stuff
...
typedef web::json::value JsonValue; //all of these are being uses
typedef web::json::value::value_type JsonValueType;
typedef std::wstring String;
typedef std::wstringstream StringStream;
using namespace utility;
using namespace web;
using namespace web::http;
using namespace web::http::client;
using namespace concurrency::streams;
...
int main()
{
...
web::json::value J1 = web::json::value::parse(S);
web::json::value &J2 = web::json::value::parse(S1);
output(J2);
wfstream _file("jsonFile.json");
_file >> obj;
wcout << obj[L"lists"][L"name"]; // the broken line
cout << endl;
}
所有的函数和变量都是正确的,它在没有[L"name"]
和有[L"lists"]
的情况下起作用。
我做错了什么?
注:我的答案可能是错误的,如果你能发布wcout << obj[L"lists"];
的输出将会有所帮助。此外,我假设您正在试图获得"名称",如"董事会信息"answers"麦克风",而不是"读者"。我假设wcout << obj[L"lists"];
的输出是:
[{"id":"576973346263056c88cfe845","name":"Board info"},{"id":"57681f5dc4864c821cc73bfb","name":"Misc"},{"id":"576978294972d812e4a91580","name":"thing"},{"id":"57681fdc228443c3306cc762","name":"thing2"},{"id":"5768200b1fbf41dd2c974052","name":"thing3"},{"id":"57681feb72ca90abb3afe170","name":"thingy"},{"id":"57681f5dc4864c821cc73bfc","name":"meep"},{"id":"57681f5dc4864c821cc73bfd","name":"BannedWordsPhrases"},{"id":"57681fba60fdfbf576abaece","name":"Errors"}]
建议答案: obj[L"lists"];
在本例中返回9个JSON对象的列表(如上所列)。您可以通过索引(0-8)访问这些JSON对象。例如,根据cpprestsdk, obj[L"lists"][0];
或obj[L"lists"].at(0);
应该返回{"id":"576973346263056c88cfe845","name":"Board info"}
。
您可以从那里获得名称,例如:
obj[L"lists"][0][L"name"]
应该返回Board info
- 在c++中使用nlohmann从类到json的转换
- 是默认情况下分配给char数组常量的值
- C++json插入数组
- nlohmann-json将一个数组插入到另一个数组中
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 如何使用curlpp通过POST方法上传文件和json数据
- JSON转换为nlohmann JSON-lib中的结构数组
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 如何解决错误:SCIP C++中的 SCIP 阶段无效 <10>
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- 如何在 nlohmann 的 json 库中获取数组长度?
- UE4 C++ 我无法将 JSON 嵌套值获取到 TArray
- 如何在特定位置追加 json 文件
- 有没有办法让编译器在我放置字符串而不是 nlohmann::json 对象时抛出错误?
- 使用 jsoncpp 解析 json 数组字符串
- 在C++中将变量 wstring 分配给 Char 数组
- 内存错误低于在C++年实现埃拉托色尼筛分时的预期
- 如何将派生类从基 ptr 分配给 nlohmann::json
- 使用REST API的JSON分阶段