c++ json::Reader 怎么去掉自动保护json转换
时间: 2023-08-08 17:06:18 浏览: 144
json_example.txt
`json::Reader` 并没有自动保护 JSON 转换。如果你想要跳过某些 JSON 字段的转换,可以在读取 JSON 字符串时使用 `json::Value` 的 `operator[]` 方法来获取对应的字段,然后判断该字段是否存在,如果存在则进行转换,否则跳过转换。
例如,假设你有一个 JSON 字符串如下:
```json
{
"name": "John",
"age": 30,
"address": {
"city": "New York",
"state": "NY",
"zip": "10001"
}
}
```
如果你只想转换 `name` 和 `age` 字段,可以这样做:
```c++
#include <iostream>
#include "json/json.h"
int main() {
std::string jsonStr = "{\"name\":\"John\",\"age\":30,\"address\":{\"city\":\"New York\",\"state\":\"NY\",\"zip\":\"10001\"}}";
Json::Value root;
Json::Reader reader;
if (reader.parse(jsonStr, root)) {
if (root.isMember("name")) {
std::string name = root["name"].asString();
std::cout << "name: " << name << std::endl;
}
if (root.isMember("age")) {
int age = root["age"].asInt();
std::cout << "age: " << age << std::endl;
}
} else {
std::cout << "failed to parse json string" << std::endl;
}
return 0;
}
```
输出结果为:
```
name: John
age: 30
```
这样就跳过了 `address` 字段的转换。
阅读全文