2013-07-22 54 views
5

Tôi sử dụng json-simple và muốn có bản in đẹp cho mục đích gỡ lỗi.JSON in đẹp mà không thay đổi thứ tự

Đây là một rất relavant SO câu hỏi: Pretty-Print JSON in Java

Tuy nhiên câu trả lời trong chủ đề nhất định, không chỉ sửa chữa các vết lõm nhưng cũng thay đổi thứ tự của các mục cần [a ... z] sử dụng trình tự chuỗi của các phím.

Có cách nào để sửa lỗi thụt đầu dòng mà không thay đổi thứ tự của các mục trong JSONObject của tôi không?

Ví dụ:

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

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

Output:

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

đầu ra mong muốn:

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

Chỉnh sửa: Tôi đang sử dụng: org.json.simple.JSONObject

+0

Xem nếu điều này có thể giúp bạn: http://stackoverflow.com/questions/6541757/when-using-spring-mvc-for-rest-how-do-you- enable-jackson-to-pretty-print-render/6541956 # 6541956 –

+0

@ carl-lopez Điều gì về Jackson phải làm với Gson? –

+0

Có thể thay thế bằng, như bạn có thể nghĩ –

Trả lời

0

Số JSONObject là số HashMap, không có thứ tự duy trì các mục nhập bạn put vào đó.

7

org.json.simple.JSONObject lớp mở rộng java.util.HashMap và đây là lý do tại sao bạn thấy thứ tự của thuộc tính này trên đầu ra. Phương pháp setPrettyPrinting() không thay đổi thứ tự. Bạn có thể xóa nó khỏi mã nguồn và không có gì thay đổi. Nếu bạn muốn giữ lại đơn hàng, bạn có thể sử dụng java.util.LinkedHashMap thay vì org.json.simple.JSONObject.

đơn giản ví dụ:

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)); 
    } 
} 
+0

Tôi đang gặp sự cố để tải xuống và chỉnh sửa mã nguồn của simple-json bằng Maven. Đọc thêm? – Sait

+0

Tại sao bạn muốn thay đổi thư viện? Đây không phải là một giải pháp. Tại sao bạn không muốn thay đổi mã nguồn của mình? Bạn có thể hiển thị cho chúng tôi mã nguồn thực của bạn không? –

+0

Mã nguồn của tôi không có gì lạ mắt. Chỉ có nhiều JJSONArrays và SONObjects bên trong các JSONObject khác. Đó là lý do tại sao tôi đang xem xét thay đổi thư viện. Ý bạn là gì bằng cách nói 'Đây không phải là một giải pháp.' Tôi nghĩ rằng việc thay đổi 'HashMap' thành' LinkedHashMap' trong bản thực thi gốc của 'simple-json' sẽ giải quyết vấn đề. Bạn có nghĩa là nó không phải là một thực hành tốt nhất hoặc bạn có nghĩa là nó không phải là đi làm việc ở tất cả? – Sait

Các vấn đề liên quan