Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Jsoncpp停止根据元素字母顺序编写_C++_Json_Jsoncpp - Fatal编程技术网

C++ Jsoncpp停止根据元素字母顺序编写

C++ Jsoncpp停止根据元素字母顺序编写,c++,json,jsoncpp,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; va

我使用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));
问题在于,它们并不像我添加到Json::value val中的顺序那样出现在字符串中,它们似乎是根据每个元素中的第一个字母按字母顺序排序的(“firstname、lastname、lookx、looky、lookz、x”等)。你如何预防这种情况?我希望按照我将其添加到Json::value的顺序添加它,而不是进行排序

如果这是不可能的,人们将如何改变源代码来实现它


谢谢

Jsoncpp很可能使用
std::map
存储键/值对,它将返回按字母顺序排列的键/值对。我没有研究过Jsoncpp的代码,但您有两种选择:

  • 将代码更改为在内部使用
    std::list
    或其他一些有序容器(
    vector
    ,等等)。这可能会导致性能处罚
  • 存储要输出的键的顺序,并自己生成输出
  • 但是,您可能知道,JSON中的键顺序没有指定,因此如果您依赖于这一事实,您应该重新考虑您的应用程序设计