JSON Wrapper Klasse nicht Deserialisierung

Sep 23 2020

Ich habe etwas JSON, das so aussieht (Daten wurden aus Datenschutzgründen entfernt.

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

Ich habe dafür eine innere Wrapper-Klasse geschrieben:

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

In einer Methode mache ich so etwas WrapperUserJson data = (WrapperUserJson)JSON.deserialize(st, WrapperUserJson.class);

Es wird jedoch immer null zurückgegeben. Ich weiß, dass der JSON an ihn übergeben wird, also verstehe ich ihn nicht. Was vermisse ich?

Antworten

1 sfdcfox Sep 23 2020 at 22:03

Ihnen fehlt das Attribut der obersten Ebene user. Sie benötigen eine zweite Wrapper-Klasse:

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

Was Sie dann in die Deserialisierungsmethode einspeisen:

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

Sie können automatisch Code aus JSON mit json2apex generieren , einem großartigen Tool zum schnellen Erstellen von Apex aus einer bestimmten JSON-Quelle.