2017-05-11 2 views
0

Ich habe eine json wie diese, die ich in der Antwort von httpWie JSON-Daten in Apex Salesforce erhalten?

{ 
    "offset": 0, 
    "limit": 50, 
    "objects": [ 
    { 
     "id": "59118fb6e4b0168ec4b56692", 
     "modifiedDate": 1494323126886, 
     "requestedIds": null, 
     "mergedIds": [], 
     "properties": { 
     "name": [ 
      { 
      "value": "Abhimanyu", 
      "metadata": {} 
      } 
     ], 
     "company": [], 
     "title": [], 
     "email": [ 
      { 
      "value": "[email protected]", 
      "metadata": {} 
      } 
     ] 
     }, 
     "state": "ACTIVE" 
    }, 
    { 
     "id": "590d5813e4b03a8336fa1642", 
     "modifiedDate": 1494046739619, 
     "requestedIds": null, 
     "mergedIds": [], 
     "properties": { 
     "name": [ 
      { 
      "value": "Tim Archer", 
      "metadata": {} 
      } 
     ], 
     "company": [], 
     "title": [], 
     "email": [ 
      { 
      "value": "[email protected]", 
      "metadata": {} 
      } 
     ] 
     }, 
     "state": "ACTIVE" 
    } 
    ], 
    "size": 2 
} 

rufen immer bin, und ich bin der Lage, Objekte von json über diesen folgenden Code zu erhalten:

String s = res.getBody(); 
    Map<String,Object> jsonMap = (Map<String, Object>)JSON.deserializeUntyped(s); 
    String jsonSubset = JSON.serialize(jsonMap.get('objects')); 

Was ich brauche, ist der Wert von Name und E-Mail in einer Variablen. Bitte helfen Sie mir dabei !!

Antwort

0

Dies wird eine langwierige Aufgabe sein, aber sobald Sie alle Ihre Daten in geeignete Wrapper Klassen klassifiziert haben, dann ist es ziemlich einfach und leicht zu warten.

Zunächst müssen Sie Ihre MainWrapper Klasse definieren. Dies wird alles auf seiner eigenen Ebene enthalten. Wenn es ein Objekt als Schlüsselpaar hat, müssen wir sicherstellen, dass es als List<> enthalten ist. Das ist also, wie Sie Ihre MainWrapper sein sollte:

public class MainWrapper { 
    Integer offset; // Singleton variable 
    Integer limits; // Singleton variable 
    List<ObjectsWrapper> objects; // Collection variable since it starts with [], 
    Integer size; // Singleton variable 
} 

Da Sie haben Array von objects in JSON, das ist, warum ich es als List in MainWrapper aufgenommen haben. Jetzt ist es Zeit, ObjectsWrapper zu definieren. Unten ist Wrapper für dasselbe definiert.

public class ObjectsWrapper { 
    String id; 
    String modifieddate; 
    String requestedIds; 
    PropertyWrapper properties; 
} 

Da es nur auf properties mit objects assoziiert, deshalb ist es ein nicht-Collection-Typ. Unten ist die Darstellung von properties.

public class PropertyWrapper { 
    List<NameWrapper> name; 
    List<String> company; 
    List<String> title; 
    List<EmailWrapper> email; 
    String state; 
} 

public class NameWrapper { 
    String name; 
    String metadata; 
} 

Ich denke, jetzt haben Sie eine Vorstellung davon, wie Daten von JSON in verschiedene Wrapper-Klasse zu organisieren. Sobald Sie damit fertig sind, deserialisieren Sie einfach die JSON in MainWrapper Klasse und greifen darauf zu. Zum Beispiel:

MainWrapper mainJSONWrapper = (MainWrapper) JSON.deserialize(JSON,MainWrapper.class); 
List<ObjectsWrapper> objectsLst = mainJSONWrapper.objects; 
for(ObjectsWrapper obj:objectsLst) { 
    List<NameWrapper> lstNameWrapper = obj.properties; 
    for(NameWrapper nameObj:NameWrapper) { 
     System.debug('Name:'+nameObj.name); 
     System.debug('metadata:'+nameObj.metadata); 
    } 
} 

Above Code nicht getestet, aber ja, es wird Idee geben, wie Sie JSON in geeigneter Weise deserialisieren sollen.

gehen ebenfalls in diese Antwort .. How to deserialize a JSON String to Apex

+0

Hey @Rohit Mourya, Danke für die Antwort. Ich habe deinen Code angewendet. aber diesen Fehler zu bekommen. System.JSONException: Erwartete Liste aber gefunden { –

+0

Versuchen Sie, 'PropertyWrapper properties;' mit 'List properties;' zu ersetzen. –

+0

, dass ich bereits –

Verwandte Themen