我正在使用jsoncpp以JSON格式存储信息。我现在需要在另一个json字符串中存储一个json字符串......换句话说,我需要在一个项目中存储一个sub_item。
使用jsoncpp生成JSON字符串,我得到了这个......
{"id":"1","name":"Advil","sub_item":"{\"id\":\"2\",\"name\":\"Liquid Gel Advil\"}\n"}
在运行时它完全正常。但是,当我的程序将此信息保存到MySQL数据库(退出时),然后在重新启动程序时将其加载回来时,它会从MySQL数据库加载相同的JSON字符串,但它现在看起来像这样...
{"id":"1","name":"Advil","sub_item":"{"id":"2","name":"Liquid Gel Advil"}"}
哪个是无效的JSON字符串。我不确定为什么会这样,有人可以告诉我发生了什么......
我的MySQL查询字符串如下所示:
UPDATE json_string_test SET jsonstring='{"id":"1","name":"Advil","sub_item":"{\"id\":\"2\",\"name\":\"Liquid Gel Advil\"}\n"}';
答案 0 :(得分:-1)
经过进一步研究,我发现FastWriter已经过折旧,StreamWriterBuilder是推荐的作家。但是,它仍然产生与FastWrtier相同的问题......
我设法通过执行以下操作来修复...
1)在保存到数据库之前,我在子JSON字符串(id为2)中替换了匹配\“to \\”的所有子串。
2)在加载JSON字符串后,我在所有子JSON字符串(id为2)中替换了匹配\\“to \”的所有子字符串。
我不明白为什么我必须这样做,所以如果有人有更好的解决方案或解释......我很乐意听到它。
答案 1 :(得分:-1)
我认为您需要转置最后2个字符(假设您发布的字符串是逐字的)。你有
for _, currency := range s.Config.Currencies {
但我认为你需要
Advil\"}\n"}