JSON Wrapper Class không Deserializtion
Tôi có một số JSON giống như thế này (dữ liệu đã bị xóa vì lý do bảo mật.
{"user":{"id":"","email":"","first_name":"","last_name":""}, "STUFF I DONT WANT HERE"}
Tôi đã viết một lớp trình bao bọc bên trong cho nó như thế này:
public with sharing class WrapperUserJson {
public String id;
public String email;
public String first_name;
public String last_name;
}
Trong một phương pháp tôi đang làm một cái gì đó như WrapperUserJson data = (WrapperUserJson)JSON.deserialize(st, WrapperUserJson.class);
Nhưng nó luôn trả về null. Tôi biết thực tế là JSON đang được chuyển cho nó nên tôi không hiểu. Tôi đang thiếu gì?
Trả lời
Bạn đang thiếu thuộc tính cấp cao nhất user. Bạn cần một lớp trình bao bọc thứ hai:
public class WrapperResponseJson {
WrapperUserJson user;
}
public class WrapperUserJson {
public String id;
public String email;
public String first_name;
public String last_name;
}
Sau đó, bạn cấp dữ liệu vào phương pháp deserialize:
WrapperResponseJson data = (WrapperResponseJson)JSON.deserialize(st, WrapperResponseJson.class);
Bạn có thể tự động tạo mã từ JSON bằng cách sử dụng json2apex , một công cụ tuyệt vời để nhanh chóng tạo Apex từ một nguồn JSON nhất định.