Jsoncpp停止根据元素的字母顺序进行编写

Kai*_*aan 4 c++ json jsoncpp

我正在使用Jsoncpp使用Json :: FastWriter将Json :: value写入字符串.

string s;
s.append("me?json=");
val["firstname"] = firstname;
val["lastname"] = lastname;
val["x"] = me->myPos.X;
val["y"] = me->myPos.Y;
val["z"] = me->myPos.Z;
val["lookx"] = me->myOri.X;
val["looky"] = me->myOri.Y;
val["lookz"] = me->myOri.Z;
url.append(writer.write(val));
Run Code Online (Sandbox Code Playgroud)

问题是他们没有在字符串中出现在我加入他们将JSON ::值VAL的顺序,他们似乎是按字母顺序排序取决于第一个字母中的每个元素("名字,姓氏,lookx,听我说,lookz,x"等).你怎么防止这种情况?我希望它按照我将它添加到Json ::值的顺序添加,而不是排序.

如果这不可能,那么如何改变源代码来实现呢?

谢谢

Die*_*lla 5

很可能Jsoncpp使用a std::map来存储键/值对,它将返回按字母顺序排列的键/值对.我没有查看Jsoncpp的代码,但你有两种选择:

  1. 更改代码以在内部使用std::list或其他一些有序容器(vector等).这可能会导致性能下降.
  2. 存储要输出的键的顺序并自行生成输出.

但是,您可能知道,JSON中的键的顺序未指定,因此如果您依赖于该事实,则应重新考虑您的应用程序设计.