I am using Jsoncpp to write a Json::value to a string using the Json::FastWriter.
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));
The problem is they don't appear in the string as in the order that I added them to the Json::value val, they seem to be alphabetically sorted depending on the first letter in each element("firstname, lastname, lookx, looky, lookz,x",etc). How do you prevent this? I want it to be added in the order that I add it to the Json::value and NOT be sorted.
If this is not possible, how would one alter the source code to achieve it?
Thanks
Most likely Jsoncpp uses a std::map
to store the key/value pairs, and it will return you an alphabetically-ordered key/value pairs. I've not looked into the code of Jsoncpp, but you have two alternatives:
std::list
or some other ordered container (vector
, etc.). That may result in performance penalty.However, as you may know, the order of keys in JSON is not specified, so if you're relying on that fact, you should reconsider your application design.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With