JSON Wrapper Class bukan Deserializtion

Sep 23 2020

Saya memiliki beberapa JSON yang masuk seperti ini (data dihapus karena alasan privasi.

{"user":{"id":"","email":"","first_name":"","last_name":""}, "STUFF I DONT WANT HERE"}

Saya menulis kelas pembungkus batin untuk itu seperti ini:

    public with sharing class WrapperUserJson {
        public String id;
        public String email;
        public String first_name;
        public String last_name;
    }

Dalam metode saya melakukan sesuatu seperti WrapperUserJson data = (WrapperUserJson)JSON.deserialize(st, WrapperUserJson.class);

Tapi itu selalu mengembalikan nol. Saya tahu pasti bahwa JSON sedang diteruskan jadi saya tidak mengerti. Apa yang saya lewatkan?

Jawaban

1 sfdcfox Sep 23 2020 at 22:03

Anda kehilangan atribut tingkat atas user. Anda membutuhkan kelas pembungkus kedua:

public class WrapperResponseJson {
    WrapperUserJson user;
}
public class WrapperUserJson {
    public String id;
    public String email;
    public String first_name;
    public String last_name;
}

Yang kemudian Anda masukkan ke dalam metode deserialize:

WrapperResponseJson data = (WrapperResponseJson)JSON.deserialize(st, WrapperResponseJson.class);

Anda dapat secara otomatis menghasilkan kode dari JSON menggunakan json2apex , alat yang hebat untuk membuat Apex dengan cepat dari sumber JSON tertentu.