tôi tiêu thụ một API mà mang lại cho tôi kiểu này JSON:Java/Kotlin JSON phân tích cú pháp cải thiện
{
"data": {
"name": "Start",
"pid": "1",
"position": {
"data": {
"x": "31",
"y": "330"
},
"metadata": "empty"
}
},
"metadata": "empty"
}
Tôi đã tạo ra các lớp học với các đối tượng với cấu trúc tương tự như JSON trên. Tôi sử dụng thư viện retrofit
trong Android mà bên trong sử dụng GSON
để phân tích cú pháp JSON.
lớp mô hình của tôi sẽ là như thế này:
MResponse.class
User.class
public class User {
public String name;
public String pid;
@SerializedName("position")
public PositionData positionData;
}
PositionData.class
public class PositionData {
@SerializedName("data")
public Position position;
public String metadata;
}
Position.class
public class Position {
public String x;
public String y;
}
Bây giờ này hoạt động tốt đối với tôi. Nhưng như bạn có thể thấy cho mỗi mô hình, tôi phải tạo ra một phụ huynh mà sẽ có cùng một cấu trúc chỉ thay đổi đứa trẻ. Thực tế này tăng gấp đôi các lớp mà tôi sử dụng cho các mô hình của tôi. Tôi muốn hỏi xem có cách nào tốt hơn để tránh tất cả các lớp này không.
Tôi không muốn sử dụng các lớp bên trong. Tôi đã nghĩ rằng những kẻ đã thực hiện JSON như thế này phải có một lý do tại sao họ đã làm nó như thế này và cũng là một cách để làm cho việc phân tích cú pháp dễ dàng hơn.
Thường thì tôi đã được sử dụng để phân tích loại cấu trúc JSON:
{
"data": {
"name": "Start",
"pid": "1",
"position": {
"x": "31",
"y": "330"
}
}
}
Và đây sẽ dễ dàng hơn nếu tôi sẽ làm theo giải pháp trên.
EDIT
Ngoài ra bất kỳ giải pháp trong Kotlin được hoan nghênh
EDIT Giải pháp 2
cho Kotlin here
bình luận của tôi ở đây là có các lớp không phải là xấu nó làm cho mã của bạn có cấu trúc hơn nhưng nếu bạn muốn dễ dàng serialize và deserializing các lớp học của bạn tôi có thể đề xuất một giải pháp. – dsharew
Và tôi nghĩ rằng cũng có thể tránh tạo các lớp dữ liệu này nếu bạn muốn – dsharew
bất kỳ giải pháp nào được hoan nghênh :) –