01/10/2018, 08:14
Value của một key trong json phụ thuộc vào value của một key khác
Hi all,
Mình nhận được response từ server định dạng như sau:
{
"action":"add",
"domain":"schedule",
"params":{
"add1":"v1",
"add2":"v2",
"add3":"v3"
}
}
Và mình có rất nhiều domain ( khoảng 15), mỗi “domain” lại có khoảng 8 “action”. Và các key trong value của “params” bị phụ thuộc vào value của “action”.
Ví dụ action = “remove” --> param có key {“remove1”, “remove2”, “remove3”,…},…
Vậy cho mình hỏi, làm sao để get value của “params” theo “action” rồi đổ giá trị vào Model sử dụng Gson. ( Mình sử dụng mô hình MVP)
Rất mong nhận được sự giúp đỡ từ các bạn.
Bài liên quan
Minh chưa làm android bao giờ?
Nếu bạn xài javascript mà tên biến trong params giống vs tên action(khác 1, 2, 3…) thì bạn tham khảo cái này
@Yii, Cái này mình dùng trong Android, với cả key trong param là k có quy luật đâu, có thể tên tùy biến do server trả về, mình chỉ lấy ví dụ thế thôi
Java không thể add property động được như các ngôn ngữ script đâu nên nếu muốn handle tất cả param cho tất cả domain của bạn thì bạn nên chuyển nó sang Map<String, Object> rồi get key - value ra tương ứng thôi.
Bạn tọa ra các class lần lượt cho từng action với các param tương ứng.
Sau đó đăng kí sự kiện này cho GSON
registerTypeAdapter
Ví dụ
Ở đây có class
TimeLineDeserializer
bạn tạo ra và implementJsonDeserializer
Sau đó trong override của method
deserialize
, bạn sử dụng parse tay thông thường để trỏ về class tương ứng đã tạo thông qua từng action.