在 C++ 中将数组附加到 Json 值
Appending an array to a Json Value in C++
我知道如果我有一些整数 'a' 和 'b' 我可以将它们附加到 Json 中的值:
Value root;
Value v = root["int"];
int a = 1;
int b = 2;
v.append(a);
v.append(b);
生成 Json 文件:
"int":
[
1,
2
]
但是还有一种方法可以附加整个数组吗?也许是这样的:
Value root;
Value v = root["arrays"];
int a[3] = {1,2,3};
int b[3] = {4,5,6};
v.append(a);
v.append(b);
我正在尝试使生成的 Json 文件看起来像:
"arrays":
[
[1, 2, 3],
[4, 5, 6]
]
但是,Json 只附加指针地址值,读作 "true":
"arrays":
[
true,
true
]
明确的方法是使用 range-for 和临时 Value
。
Value root;
Value v = root["arrays"];
int a[3] = {1,2,3};
int b[3] = {4,5,6};
Value tmp;
for(auto i : a) { tmp.append(i); }
v.append(tmp);
tmp = Value{}; // reset
for(auto i : b) { tmp.append(i); }
v.append(tmp)
一个可能的辅助模板函数来很好地包装它:
template<typename RANGE>
Value rangeToValue(RANGE src) {
Value result;
for (const auto &value : src) {
result.append(value);
}
return result;
}
那么这应该可行:
v.append(rangeToValue(a));
v.append(rangeToValue(b));
我知道如果我有一些整数 'a' 和 'b' 我可以将它们附加到 Json 中的值:
Value root;
Value v = root["int"];
int a = 1;
int b = 2;
v.append(a);
v.append(b);
生成 Json 文件:
"int":
[
1,
2
]
但是还有一种方法可以附加整个数组吗?也许是这样的:
Value root;
Value v = root["arrays"];
int a[3] = {1,2,3};
int b[3] = {4,5,6};
v.append(a);
v.append(b);
我正在尝试使生成的 Json 文件看起来像:
"arrays":
[
[1, 2, 3],
[4, 5, 6]
]
但是,Json 只附加指针地址值,读作 "true":
"arrays":
[
true,
true
]
明确的方法是使用 range-for 和临时 Value
。
Value root;
Value v = root["arrays"];
int a[3] = {1,2,3};
int b[3] = {4,5,6};
Value tmp;
for(auto i : a) { tmp.append(i); }
v.append(tmp);
tmp = Value{}; // reset
for(auto i : b) { tmp.append(i); }
v.append(tmp)
一个可能的辅助模板函数来很好地包装它:
template<typename RANGE>
Value rangeToValue(RANGE src) {
Value result;
for (const auto &value : src) {
result.append(value);
}
return result;
}
那么这应该可行:
v.append(rangeToValue(a));
v.append(rangeToValue(b));