我的jSon对象转换代码有问题。我正在尝试编写一个包含向量的循环,如果向量具有反转,则将其存储在jSon对象中。我唯一真正的问题是正确的输出。在期望字符串时尝试将变量用作键值时出现错误。我的主要问题是如何将整数转换为字符串,以便代码接受并正确打印?
for(auto j = 0; j <= myvec.size(); j++){
m = j+1;
if(m > myvec.size()){
break;
}
if(name == metad){
break;
}
if(myvec[m] != 0){
if(myvec[j] > myvec[m]){
jcount = j;
jsonresult.emplace_back(nlohmann::json::object_t::value_type(j,{ myvec[j], myvec[m]}));
count++;
}
主要问题是在emplace_back行中,它不允许我使用j作为导致错误的正确键值
error: no matching function for call to ‘std::pair<const std::__cxx11::basic_string<char>, nlohmann::basic_json<> >::pair(int&, <brace-enclosed initializer list>)’
jsonresult.emplace_back(nlohmann::json::object_t::value_type(j,{myvec[j], myvec[m]}));
所以我想我的问题是如何正确存储动态变量,以便我的代码将其输出
1":[811700988,797039],"2":[797039,-1680733532]
代替
[
2,
797039,
-1680733532
]
感谢您的帮助,谢谢!
答案 0 :(得分:0)
如果您使用的是C ++ 11,则可以使用to_string()
将索引转换为用作对象键的字符串。而且,您可以为JSON对象中的属性分配一个向量。
if (myvec[m] != 0 && myvec[j] > myvec[m]) {
vector<int> pair{myvec[j], myvec[m]};
jsonresult[to_string(j)] = pair;
}
emplace_back()
用于附加到JSON数组,而不是对象。