Fermer

février 18, 2025

Désérialiser les réponses JSON dans Apex / Blogs / Perfient

Désérialiser les réponses JSON dans Apex / Blogs / Perfient


En tant que développeurs Salesforce, manipulation Json Les réponses sont une tâche courante lorsque vous travaillez avec des API externes ou la manipulation des structures de données. Apex fournit plusieurs méthodes puissantes pour désérialiser JSON en objets natifs, ce qui facilite le travail avec des données structurées. Dans ce blog, nous explorerons différentes approches pour désérialiser JSON dans Apex, accompagnées d’exemples pour une meilleure compréhension.

1.Utilisation de la méthode json.deserialize ()

Cette méthode est simple et désérialise le contenu JSON dans un objet. L’objet retourné peut être jeté à un type spécifique pour un traitement ultérieur.

Exemple:

String jsonString = '{"name": "John Doe", "age": 30}';
Object obj = JSON.deserialize(jsonString, Object.class);
Map<String, Object> mapData = (Map<String, Object>) obj;

System.debug('Name: ' + mapData.get('name'));
System.debug('Age: ' + mapData.get('age'));

Quand utiliser:

  • Lorsque la structure JSON est simple.
  • Si la structure JSON peut varier et taper la coulée est gérable.

2.Utilisation de la méthode JSON.deserializeUntyped ()

Cette méthode désérialise JSON en objets tapés vaguement tels que Map ou List . Il est utile lorsque vous avez besoin de flexibilité sans créer une classe personnalisée.

Exemple:

String jsonString = '{"name": "Jane Doe", "hobbies": ["reading", "traveling"]}';
Map<String, Object> data = (Map<String, Object>) JSON.deserializeUntyped(jsonString);

System.debug('Name: ' + data.get('name'));
List<Object> hobbies = (List<Object>) data.get('hobbies');
System.debug('Hobbies: ' + hobbies);

Quand utiliser:

  • Pour les structures JSON dynamiques ou imprévisibles.
  • Lorsqu’une classe personnalisée n’est pas nécessaire.

3 et 3 Utilisation de la méthode json.deserializestrict ()

Cette méthode est similaire à JSON.deserialize () mais applique un type strict correspondant entre la chaîne JSON et le type Apex cible. Il lance une exception si les types ne correspondent pas.

Exemple:

String jsonString = '{"name": "Mark", "age": 25}';
try {
    Map<String, Object> mapData = (Map<String, Object>) JSON.deserializeStrict(jsonString, Map<String, Object>.class);
    System.debug('Name: ' + mapData.get('name'));
    System.debug('Age: ' + mapData.get('age'));
} catch (Exception e) {
    System.debug('Error: ' + e.getMessage());
}

Quand utiliser:

  • Lorsque vous devez appliquer l’intégrité des données pendant la désérialisation.
  • Pour les scénarios où la validation de type stricte est critique.

4 Utilisation de classes Apex personnalisées

Définir une classe personnalisée qui mappe à la structure JSON est une approche robuste. Cette méthode est idéale pour les objets JSON complexes et imbriqués.

Exemple:

public class Person {
    public String name;
    public Integer age;
}

String jsonString = '{"name": "Alice", "age": 28}';
Person person = (Person) JSON.deserialize(jsonString, Person.class);
System.debug('Name: ' + person.name);
System.debug('Age: ' + person.age);

Quand utiliser:

  • Pour les structures JSON bien définies et statiques.
  • Lorsque la réutilisabilité et la lisibilité sont des priorités.

5 Traiter JSON imbriqué avec des cours personnalisés

Pour les structures JSON imbriquées, créez plusieurs classes pour refléter la hiérarchie JSON.

Exemple:

public class Order {
    public String orderId;
    public List<Item> items;
}

public class Item {
    public String itemName;
    public Double price;
}

String jsonString = '{"orderId": "ORD123", "items": [{"itemName": "Laptop", "price": 1200.50}, {"itemName": "Mouse", "price": 25.75}]}';
Order order = (Order) JSON.deserialize(jsonString, Order.class);

System.debug('Order ID: ' + order.orderId);
for (Item item : order.items) {
    System.debug('Item: ' + item.itemName + ', Price: ' + item.price);
}

Quand utiliser:

  • Pour les structures JSON profondément imbriquées ou complexes.
  • Lorsque vous maintenez des relations claires entre les objets est essentiel.

6. Désérialiser les tableaux JSON

Si le JSON est un tableau, vous pouvez le désérialiser directement dans une liste d’objets ou une liste de classes personnalisées.

Exemple:

String jsonString = '[{"name": "John"}, {"name": "Jane"}]';
List<Person> people = (List<Person>) JSON.deserialize(jsonString, List<Person>.class);

for (Person person : people) {
    System.debug('Name: ' + person.name);
}

Quand utiliser:

  • Lorsque le JSON représente un tableau.
  • Pour les scénarios nécessitant un traitement en vrac.

Conclusion

Le choix de la méthode correcte pour désérialiser JSON dans Apex dépend de la complexité de la structure JSON et des exigences de votre application. Voici un résumé rapide:

JSondeSealizationMethods

Comprendre ces approches vous permet de gérer efficacement JSON dans vos applications Salesforce et de créer des solutions robustes et maintenables. Codage heureux!






Source link