2012-11-30 33 views
7

Tôi đã cố gắng đánh giá tính năng GWT Autobean để giải mã/mã hóa đối tượng JSON thành các đối tượng miền cho các cuộc gọi REST.GWT Autobean - cách xử lý danh sách?

Tiếp theo ví dụ: http://code.google.com/p/google-web-toolkit/wiki/AutoBean#Quickstart

tôi đã có thể chuyển đổi một đối tượng JSON số ít cho một đối tượng tên miền:

AutoBean<Person> personBean = AutoBeanCodex.decode(factory, Person.class, JsonResources.INSTANCE.json().getText()); 

nơi JsonResources.INSTANCE.json() được trả về một chuỗi JSON.

Tuy nhiên, tôi đã không thành công trong việc chuyển đổi danh sách đối tượng Person từ JSON.

Sẽ hữu ích nếu ai có ví dụ về điều này?

Cảm ơn!

Trả lời

17

Cách duy nhất tôi có thể nghĩ là tạo một chiếc xe ô tô đặc biệt, có tài sản List<Person>. Ví dụ:

public interface Result { 
    void setPersons(List<Person> persons); 
    List<Person> getPersons(); 
} 

Và chuỗi dụ json:

{ 
    persons:[ 
     {"name":"Thomas Broyer"}, 
     {"name":"Colin Alworth"} 
    ] 
} 

CẬP NHẬT: Cách giải quyết khi đầu vào JSON là một mảng (theo đề nghị của persons[0] trong ý kiến) .E.g. JSON trông như thế này:

[{"name":"Thomas Broyer"},{"name":"Colin Alworth"}] 

Và phân tích mã trông như thế này:

AutoBeanCodex.decode(factory, Result.class, "{\"persons\": " + json + "}").getPersons(); 
+1

+1 cho mẫu mã của bạn ;-) –

+3

Và để workaround vấn đề mà không thay đổi JSON: 'AutoBeanCodex.decode ("{\" người \ ":" + json + "}"). getPersons() ' –

+0

Đây là kỹ thuật tôi sử dụng trong autobeans của mình. Nhưng tôi nghĩ tôi sẽ áp dụng kỹ thuật được thực hiện bởi @ThomasBroyer. – Jonathan

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