2011-08-11 43 views
7

tôi có lớp học như thế này:Java đối tượng JSON với org.json lib

public class Class1 { 
    private String result; 
    private String ip; 
    private ArrayList<Class2> alarm; 
} 

đâu Alarm một lớp học như thế này:

public class Class2 { 
    private String bla; 
    private String bla1; 
} 

Có cách dễ dàng để chuyển đổi thể hiện của Class1 để Đối tượng JSON với org.json?

Trả lời

18

Tôi nghĩ việc sử dụng hàm tạo JSONObject(Object) của org.json.lib là những gì bạn đang tìm kiếm. Nó sẽ xây dựng một JSONObject từ đối tượng Java của bạn dựa trên các getters của nó. Sau đó, bạn có thể sử dụng JSONObject # toString để lấy Json thực tế được tạo ra.

JSONObject jsonObject = new JSONObject(instanceOfClass1); 
String myJson = jsonObject.toString(); 
+1

Đậu của anh ta không có bất kỳ phương thức truy cập công khai nào, do đó JSONObject sẽ không thể nhận được các thuộc tính của anh ta. –

+1

Đúng vậy. Tôi đoán nó có thể là một giả định tồi tệ về phía tôi rằng họ đã bị bỏ lại vì lợi ích ngắn gọn. – BuffaloBuffalo

+0

Ye, Cảm ơn bạn) – Divers

4

Trong khi JSONObject là con đường để đi, bạn cần phải làm theo những gì javadoc của nó nói về thuộc tính bean:

Xây dựng một JSONObject từ một đối tượng sử dụng getters đậu. Nó phản ánh trên tất cả các phương pháp công khai của đối tượng. Đối với mỗi phương thức không có tham số và tên bắt đầu bằng "get" hoặc "is" theo sau là chữ hoa, phương thức được gọi và khóa và giá trị được trả về từ phương thức getter được đưa vào JSONObject. Phím được tạo bằng cách xóa tiền tố "get" hoặc "is". Nếu ký tự còn lại thứ hai không phải là chữ hoa, thì ký tự đầu tiên là được chuyển đổi thành chữ thường. Ví dụ, nếu một đối tượng có một phương thức có tên là "getName", và nếu kết quả gọi là object.getName() là "Larry Fine", thì JSONObject sẽ chứa "name": "Larry Fine".

Dựa trên tài liệu, nó sẽ không thành công trong trường hợp của bạn vì bạn không để lộ các thuộc tính đó thông qua các bộ định vị và định vị.

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