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 ที่กำหนด