java中JSON对象字符串排序问题

我这边使用的fastjson

某些应用场景需要使用到JOSNObject,并且对toString()之后字符串中key排序有要求。

  JSONObject object=new JSONObject();
        object.put("aaa",111);
        object.put("bbb",222);
        object.put("ccc",333);
        object.put("ddd",444);

如此toString之后结果:

{"aaa":111,"ddd":444,"ccc":333,"bbb":222}

并不是放置的顺序


如果想依照放置的顺序来进行输出其实很简单:

  JSONObject object=new JSONObject(true);
        object.put("aaa",111);
        object.put("bbb",222);
        object.put("ccc",333);
        object.put("ddd",444);

输出结果:

{"aaa":111,"bbb":222,"ccc":333,"ddd":444}


new JSONObject时默认为false


也可以看方法:

JSONObject.toJSONString(json, SerializerFeature.SortField)



  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Java ,可以使用 Gson 库将字符串转换成 JSON 对象,然后按照指定的 key 进行排序,示例代码如下: ```java import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import java.util.*; public class JsonSorter { public static void main(String[] args) { // 原始 JSON 字符串 String jsonString = "{\"name\":\"Tom\",\"age\":18,\"gender\":\"male\"}"; // 将 JSON 字符串转换成 JSON 对象 JsonParser jsonParser = new JsonParser(); JsonElement jsonElement = jsonParser.parse(jsonString); JsonObject jsonObject = jsonElement.getAsJsonObject(); // 将 JSON 对象的 key 存入 List 排序 List<String> keys = new ArrayList<String>(); for (Map.Entry<String, JsonElement> entry : jsonObject.entrySet()) { keys.add(entry.getKey()); } Collections.sort(keys); // 根据排序后的 key 重新构建 JSON 对象 JsonObject sortedJsonObject = new JsonObject(); for (String key : keys) { sortedJsonObject.add(key, jsonObject.get(key)); } // 将排序后的 JSON 对象转换成字符串 Gson gson = new Gson(); String sortedJsonString = gson.toJson(sortedJsonObject); System.out.println(sortedJsonString); // 输出:{"age":18,"gender":"male","name":"Tom"} } } ``` 在上面的示例代码,首先将原始的 JSON 字符串转换成 JSON 对象,然后将 JSON 对象的 key 存入 List 排序,最后根据排序后的 key 重新构建 JSON 对象,并将其转换成字符串。注意,这里使用了 Gson 库来进行 JSON 对象字符串之间的转换。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值