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 :
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
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":[]}
Ce petit bout de code fonctionne très bien pour les valeurs simple comme "question_id_82":"317".
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;
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 !![]()
Partager