JSON Wrapper Class không Deserializtion

Sep 23 2020

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

1 sfdcfox Sep 23 2020 at 22:03

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.