使用QT工具,用QJsonObject保存JSON文件,文件可以保存,但是发现内容会按字母顺序自动排序,而不是按原本的顺序,应如何修改才能避免自动排序?网上搜了很多都没有有效的修改方法。
示例代码:
void SaveJson()
{
//创建json对象
QJsonObject sub;
sub.insert("serial",QJsonValue(serial));
sub.insert("name",QJsonValue(name));
obj.insert("server",QJsonValue(sub));
//内存中的数据写到文件
QJsonDocument doc(sub);
//将json对象转换成字符串
QByteArray data=doc.toJson();
QFile file("D:\\test1.json");
file.open(QIODevice::WriteOnly);
file.write(data);
file.close();
}
如上面所说,运行结果输出的文件会自动把name项排序到前面,应怎样避免自动排序?
有办法么?我也遇到了这个问题。
不自动排序 只能看看保存文件的api有没有相关的参数
不过你可以实现 读取 展示的时候 按照原来的顺序展示。
实现思路就是 把json的key存储到有顺序的数组里。
读取的时候按照如下读取
从数组读出key 然后读JSON的值
key=arr[i];value=json[key]
因为没有楼主使用的类库下面的代码我使用HashMap举例
HashMap跟JSON是类似的。
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Test {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
String[] arr= {"天气情况","最高温度","风力情况"};
map.put("天气情况", "11111");
map.put("最高温度", "22222");
map.put("风力情况", "33333");
Set<String> set=map.keySet();
System.out.println("----------下面的内容自动排序输出---------");
for (String key : set)
{
System.out.println(key+"--->"+map.get(key));
}
System.out.println("----------下面的内容按照123顺序输出---------");
for(int i=0;i<arr.length;i++)
{
String key=arr[i];
System.out.println(key+"--->"+map.get(key));
}
}
}
友/同事推荐我们的问答产品吗?您的真实评价是我们
https://blog.csdn.net/weixin_38733919/article/details/102459249