Bonjour,
Toujours dans les joies de la manipulation des fichiers JSON, je n'arrive pas a obtenir des résultats avec la fonction: TJson.JsonToObject.
Voici mon code qui ne plante pas mais ne crée pas les données récupérer depuis une URL!
Source JSON:
Et voici le source qui ne plante pas pas qui ne rempli pas mon Object: TAtlasListe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 {"Tables":[{"Nom":"Colonies","Libelle":"Les colonies"},{"Nom":"Cr\u00e9atures","Libelle":"Les cr\u00e9atures"},{"Nom":"G\u00e9n\u00e9ticiens","Libelle":"Les g\u00e9n\u00e9ticiens"},{"Nom":"Lieux","Libelle":"Les lieux"},{"Nom":"Mercenaires","Libelle":"les mercenaires"},{"Nom":"Nations","Libelle":"Les nations"},{"Nom":"Navires","Libelle":"Les navires"},{"Nom":"Personnages","Libelle":"Les personnages"},{"Nom":"Pirates","Libelle":"Les pirates"},{"Nom":"Rep\u00e8res","Libelle":"Les rep\u00e8res"},{"Nom":"Soci\u00e9t\u00e9s","Libelle":"Les soci\u00e9t\u00e9s"},{"Nom":"Surfaces","Libelle":"La surface"},{"Nom":"Villes","Libelle":"Les villes"}]}
Le code fait bien ce que j'en attends, jusqu’à la ligne :
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
48
49
50
51
52 TAtlasTable = class [JSONName('Nom')] Nom : string; [JSONName('Libelle')] Libelle: string; end; TAtlasListe = class [JSONName('Tables')] AtlasListe: TArray<TAtlasTable>; end; TThread.CreateAnonymousThread( procedure var LData: string; LRetour: string; LStatus: Integer; LClient: THTTPClient; LReponse: IHTTPResponse; LAtlasListe: TAtlasListe; LAtlasTable: TAtlasTable; begin LData := EmptyStr; LStatus := 0; LClient := THTTPClient.Create; try LReponse := LClient.Get(AUrl); LStatus := LReponse.StatusCode; if LReponse.StatusCode = 200 then begin LAtlasListe := TAtlasListe.Create; LRetour := TJSONObject.ParseJSONValue(LReponse.ContentAsString).ToString; LAtlasListe := TJson.JsonToObject<TAtlasListe>(LRetour); for LAtlasTable in LAtlasListe.AtlasListe do LData := LData + LAtlasTable.Nom + ':' + LAtlasTable.Libelle + #13#10; LAtlasListe.Free; end; finally LClient.Free; end; TThread.Synchronize(TThread.CurrentThread, procedure begin AAfficheData(LStatus, Trim(LData)); end); end) .Start;
Aprés la ligne, le tableau reste vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part LAtlasListe := TJson.JsonToObject<TAtlasListe>(LRetour);
Qu'est-ce que j'ai mal fait, c'est un problème de création des classes TAtlasListe ou TAtlasTable, ou alors c'est la structure de mon JSON qui est incorrect pour pouvoir être utilisé par TJson.JsonToObject ?
Merci d'avance de vos remarques !
Partager