Bonjour,

Je sais que mon intitulé est assez tordu, je pense qu'un bout de code expliquera mieux mon souci, d'abord voici un exemple de JSON que je doit traiter :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
{"correctness":{"question_id_86":true,
    "question_id_85":true,
    "question_id_84":false,
    "question_id_83":true,
    "question_id_82":true,
    "question_id_81":true,
    "question_id_80":false,
    "question_id_79":false,
    "question_id_78":true,
    "question_id_77":false,
    "question_id_76":true,
    "question_id_75":true,
    "question_id_74":true,
    "question_id_73":true,
    "question_id_72":true,
    "question_id_71":true,
    "question_id_70":true,
    "question_id_69":true,
    "question_id_68":true,
    "question_id_67":true,
    "question_id_66":true,
    "question_id_65":true},
 
"user_answered":{
    "question_id_86":"330",
    "question_id_85":"327",
    "question_id_84":"323",
    "question_id_83":"319",
    "question_id_82":"317",
    "question_id_81":["309","312","310"],
    "question_id_80":["307","308"],
    "question_id_79":["300","301"],
    "question_id_78":"296",
    "question_id_77":"295",
    "question_id_76":"289",
    "question_id_75":"287",
    "question_id_74":"284",
    "question_id_73":["280","279","282"],
    "question_id_72":"276",
    "question_id_71":"272",
    "question_id_70":"269",
    "question_id_69":["264","265","261","262"],
    "question_id_68":["259","257","256","258"],
    "question_id_67":"254",
    "question_id_66":"251",
    "question_id_65":"248"},
"passed_time":"8 minutes 48 seconds","calc_method":"by_correctness","attributes_information":[]}
Puis le code pour passer en revu l'objet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
JSONObj := TJSONObject.ParseJSONValue(Response.Content) as TJSONObject; // Response = TRESTResponse qui contient mon JSON
    JSONObj := JSONObj.GetValue('user_answered') as TJSONObject;
    JSONObj2 := TJSONObject.ParseJSONValue(Response.Content) as TJSONObject;
    JSONObj2 := JSONObj2.GetValue('correctness') as TJSONObject;
    for JSONPair in JSONObj do
    Begin
      Var Question := StringReplace(JSonPair.JsonString.Value,'question_id_','',[]);
      Var Reponse := JSonPair.JsonValue.Value;
      ShowMessage(Question+'/'+Reponse);  // Fonction de test pour afficher les valeurs
      //TableQuestion.Locate('id',Question,[]);
    End;
Ce petit bout de code fonctionne très bien pour les valeurs simple comme "question_id_82":"317".
Mais dès qu'il y a plusieurs valeurs comme "question_id_73":["280","279","282"] La valeur de Reponse est vide (d'ailleurs je ne peut pas connaitre les clés de ce JSON à l'avance), j'ai essayé pas mal de choses sans succès, si vous avez des idées je les prend volontier !