由于一直在写 python,所以最近想做一门硬菜—— c++。但遇到一个问题
我在使用 nlohmann 的 json 库将字符串解析为 json 后,再取 result 字段的数据,遍历所有对象,并将字符串再次 parse 为 json。但 for 循环中可以修改值,但是到下一个循环就值就变为原值了。但按道理对引用的值进行修改,原本的变量也会跟着改变。似乎我的代码中,引用并非是原变量的引用。
现在的解决方案是,两次循环都先创建一个对象啊,并把修改结果扔进去,最后删掉 result 字段,加入新创建的对象。虽然能解决实际问题,但没有解决学习的问题。想问一下各位,到底哪里错了?
(╥﹏╥)代码写的很烂,辣到各位眼睛真的很抱歉。如果能展示一下优化代码,真的感激不尽~
{
"id": "638244d6efa24d1ca55caad38b3e3638",
"jsonrpc": "2.0",
"result": [
[
0,
0,
1
],
[
1,
"{'roc_function': 'hello', 'args': 'hello', 'kwargs': ''}",
],
]
}
auto row = reply_json["result"];
for ( auto &item : row )
{
for ( auto &col : item )
{
if ( col.is_string() )
{
/* 将字符串转化为 json */
string temp = col.dump();
string sub_temp = temp.substr( 1, temp.length() - 2 );
replace( sub_temp.begin(), sub_temp.end(), '\'', '\"' );
json temp_json = json::parse( sub_temp );
/* 重新赋值 */
col = temp_json;
/* 格式化输出 */
cout << col.dump(2) << endl;
/* {
"roc_function": "hello",
"args": "hello",
"kwargs": ""
} */
}
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.