簡體   English   中英

JSON漂亮的打印而不改變順序

[英]JSON pretty-print without changing the order

我使用json-simple並希望有漂亮的打印用於調試目的。

這是一個非常相關的SO問題: Java中的Pretty-Print JSON

然而,給定線程中的答案不僅修復了縮進,而且還使用鍵的字符串順序將項的順序更改為[a ... z]。

有沒有辦法在不改變JSONObject中項目順序的情況下修復縮進?

例:

JSONObject myJSon = new JSONObject();
myJSon.put("zzz", 1);
myJSon.put("aaa", 1);

Gson gson = new GsonBuilder().setPrettyPrinting().create();
System.out.println( gson.toJson(myJSon) );

輸出:

{
  "aaa": 1,
  "zzz": 1
}

期望的輸出:

{
  "zzz": 1,
  "aaa": 1
}

編輯:我正在使用:org.json.simple.JSONObject

org.json.simple.JSONObject類擴展了java.util.HashMap ,這就是為什么在輸出中看到這個屬性的順序的原因。 setPrettyPrinting()方法不會更改順序。 您可以從源代碼中刪除它,沒有任何更改。 如果要保留順序,可以使用java.util.LinkedHashMap而不是org.json.simple.JSONObject

簡單的例子:

import java.util.LinkedHashMap;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class GsonProgram {

    public static void main(String[] args) throws Exception {
        Map<String, Integer> myJSon = new LinkedHashMap<String, Integer>();
        myJSon.put("zzz", 1);
        myJSon.put("aaa", 1);

        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        System.out.println(gson.toJson(myJSon));
    }
}

JSONObject是一個HashMap ,沒有保持你的條目順序put了進去。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM