gpt4 book ai didi

c++ - Jsoncpp 停止让它根据元素字母顺序编写

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:48:12 41 4
gpt4 key购买 nike

我正在使用 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 的顺序出现在字符串中,它们似乎是根据每个元素中的第一个字母按字母顺序排序的(“名字,姓氏, lookx、looky、lookz、x”等)。你如何防止这种情况?我希望它按照我将其添加到 Json::value 的顺序添加,而不是排序。

如果这不可能,如何修改源代码来实现它?

谢谢

最佳答案

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

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

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

关于c++ - Jsoncpp 停止让它根据元素字母顺序编写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7582300/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com