我需要創建常量json字符串或按鍵排序的json。常數json字符串是什麼意思?請看下面的代碼示例,我創建。如何使用gson創建按鍵排序的json?
我的代碼1:
public class GsonTest
{
class DataObject {
private int data1 = 100;
private String data2 = "hello";
}
public static void main(String[] args)
{
GsonTest obj=new GsonTest();
DataObject obj2 = obj.new DataObject();
Gson gson = new Gson();
String json = gson.toJson(obj2);
System.out.println(json);
}
}
輸出1:
{"data1":100,"data2":"hello"}
我的代碼2:
public class GsonTest
{
class DataObject {
private String data2 = "hello";
private int data1 = 100;
}
public static void main(String[] args)
{
GsonTest obj=new GsonTest();
DataObject obj2 = obj.new DataObject();
Gson gson = new Gson();
String json = gson.toJson(obj2);
System.out.println(json);
}
}
輸出2:
{"data2":"hello","data1":100}
如果你看到,如果切換變量(在DataObject
類data1
& data2
),我得到不同的JSON。我的目標是獲得相同的json,即使有人改變了類變量的位置。當有人添加新變量時,我會得到它,json會改變。但是當變量移動時,json不應該改變。所以,我的目標是獲得標準的json,可能在同一個類的排序鍵順序。如果嵌套的json,那麼它應該在嵌套結構中排序。
預計雙方的代碼的運行輸出:
{"data1":100,"data2":"hello"} //sorted on keys!! Here keys are data1 & data2
我明白了,我需要改變一些東西在String json = gson.toJson(obj2);
行,但我必須做什麼?
爲什麼我需要它們來訂購?
我需要對json字符串進行編碼,然後將它傳遞給另一個函數。如果我改變鍵的順序,即使值保持不變,編碼值也會改變。我想避免這種情況。
http://stackoverflow.com/a/4515863/669721 – Miroshko
FWIW,在JSON,鍵是無序的。所以,建立依賴於任何特定順序的其他東西是一個值得懷疑的想法......除非你只是爲了美學。 – FatalError
@FatalError我希望它們能夠順序排列,因爲我將是json字符串的編碼。如果鍵移動了,我的編碼會改變,我不想那樣做。有問題編輯。所以,我需要對它進行排序。 – Abhishek