JSON Wrapper Class ไม่ใช่ Deserializtion

Sep 23 2020

ฉันมี JSON เข้ามาในลักษณะนี้ (ข้อมูลถูกลบด้วยเหตุผลด้านความเป็นส่วนตัว

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

ฉันเขียนคลาสเสื้อคลุมด้านในสำหรับมันดังนี้:

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

ในวิธีการที่ฉันทำบางอย่างเช่น WrapperUserJson data = (WrapperUserJson)JSON.deserialize(st, WrapperUserJson.class);

แต่จะส่งกลับค่าว่างเสมอ ฉันรู้ว่า JSON ถูกส่งต่อไปยังมันดังนั้นฉันจึงไม่ได้รับมัน ฉันขาดอะไรไป?

คำตอบ

1 sfdcfox Sep 23 2020 at 22:03

userคุณไม่มีแอตทริบิวต์ระดับบนสุด คุณต้องมีคลาส Wrapper ที่สอง:

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

ซึ่งคุณจะป้อนลงในวิธี deserialize:

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

คุณสามารถสร้างโค้ดจาก JSON โดยอัตโนมัติโดยใช้json2apexซึ่งเป็นเครื่องมือที่ยอดเยี่ยมสำหรับการสร้าง Apex อย่างรวดเร็วจากซอร์ส JSON ที่กำหนด