Tôi đang cố gắng phân tích cú pháp json thành java.Chuỗi JSON đến đối tượng Java sử dụng GSON
Tôi có chuỗi sau đó là json hợp lệ theo jsonlint.com
private final static String LOC_JSON =
"["
+"{"
+" \"lat1\": 39.737567,"
+" \"lat2\": 32.7801399,"
+" \"long1\": -104.98471790000002,"
+" \"long2\": -96.80045109999998"
+"},"
+" ["
+" {"
+" \"lat\": {"
+" \"b\": 38.88368709500021,"
+" \"d\": 40.620468491667026"
+" },"
+" \"long\": {"
+" \"b\": -105.75306170749764,"
+" \"d\": -104.675854661387"
+" }"
+" }"
+" ]"
+"]";
Tôi cố gắng để phân tích nó thành một đối tượng và tôi nhận được lỗi sau. "Dự kiến BEGIN_OBJECT nhưng BEGIN_ARRAY tại dòng 1 cột 2"
Gson gson = new Gson();
BoxSearch b = gson.fromJson(LOC_JSON, BoxSearch.class);
BoxSearch gồm này.
private Number lat1;
private Number lat2;
private Number long1;
private Number long2;
private Boxes[] boxes;
Hộp là đối tượng Latitude và đối tượng Kinh độ được xác định giống hệt nhau.
private String b;
private String d;
tôi có thể phân tích các thuộc tính cấp độ cao hơn (lat1, lat2, long1 và long2) vào một đối tượng BoxSearch đơn giản hơn mà chỉ có những 4 thuộc tính. Vấn đề xảy ra khi json và đối tượng phức tạp hơn. Thậm chí có thể làm những gì tôi đang cố gắng không?
Tôi hy vọng tôi đã cung cấp đủ thông tin để nhận trợ giúp. Tôi rất sẵn lòng cung cấp thêm thông tin hoặc thậm chí là một dự án thử nghiệm nếu cần thiết. Tôi đang chạy nó như một bài kiểm tra junit.
Cảm ơn.
có thể trùng lặp của [GSON ném "Dự kiến BEGIN \ _OBJECT nhưng đã BEGIN \ _ARRAY"?] (Http://stackoverflow.com/questions/9598707/gson-throwing-expected-begin-object-but-was-begin -array) - JSON của bạn là một mảng, không phải là một đối tượng. Bạn sẽ có một vấn đề mặc dù bởi vì nó là một mảng chứa các loại đối tượng khác nhau (một đối tượng và một mảng) mà bạn không thể xử lý mà không cần viết một deserializer tùy chỉnh –
@BrianRoach này giống như một câu trả lời;) –
@RC. Yeah ... Hmm. Tôi nghĩ rằng có lẽ tôi sẽ di chuyển nó, Q cũ câu trả lời tại sao anh ta nhận được lỗi, nhưng độ phân giải cho trường hợp của mình là khác nhau –