Bonjour

J'essaye sans success de deserializer le résultat d'une requête sur une API rest

Ma compréhension a certainement dérapé qq part et je n'ai pas encore trouvé la bonne explication


Voici ma requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
   client.BaseAddress = new Uri(UR);
 
      // Add an Accept header for JSON format.
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
 
      // List data response.
      HttpResponseMessage response = client.GetAsync(urlParameters).Result;  
 
      if (response.IsSuccessStatusCode)
      {
        var json = response.Content.ReadAsStringAsync().Result;
        JsonConvert.DeserializeObject<C_Record16>(json);  // Ne fonctionne pas ???
      }
La desérialisation me donne l'erreur suivante :
Citation Envoyé par JsonConvert.DeserializeObject<C_Record16>(json)
An unhandled exception of type 'Newtonsoft.Json.JsonSerializationException' occurred in Newtonsoft.Json.dll

Additional information: Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'TestGPS4NetRest.C_Record16' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.

To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.

Path '', line 1, position 1.
Pourtant ma chaine Json resultat me semble correcte

Code : Sélectionner tout - Visualiser dans une fenêtre à part
[{\"ALT\":\"17.70\",\"COG\":\"320.90\",\"DLOG\":\"1.00\",\"ENGINESTAT\":\"0\",\"ERROR\":0,\"FAVNETSTAT\":\"0\",\"GPRSSTAT\":\"1\",\"GSMLVL\":\"73.33\",\"GSMREGSTAT\":\"1\",\"GUS\":\"9\",\"IBAUTHSTAT\":\"0\",\"LAT\":\"50.901020\",\"LON\":\"3.407278\",\"NAVST\":\"1\",\"NST\":1,\"PANICBUTTONSTAT\":\"0\",\"PDOP\":\"2.4\",\"PRIVATESTAT\":\"0\",\"RELAYSTAT\":\"0\",\"ROAMINGSTAT\":\"1\",\"SBN\":\"08\",\"SEQ\":null,\"SOG\":\"0.00\",\"SWV\":\"22\",\"TIMESTAMP\":\"2016-11-13 07:00:09\",\"TRIGGER_SOURCE\":null,\"WARN\":0,\"gps_id\":\"2270\",\"id\":\"485\",\"msg_source\":\"2\"}]
Et j'ai aussi très patiemment construit ma classe destination en vérifiant plusieurs fois (ci dessous)

Quelle est mon erreur ?
Merci de votre aide

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
  public class C_Record16
  {
 
    [JsonProperty("ALT")]
    public string ALT { get; set; }
 
    [JsonProperty("COG")]
    public string COG { get; set; }
 
    [JsonProperty("NAVST")]
    public string NAVST { get; set; }
 
    [JsonProperty("INPUTPWR_FAILURE")]
    public string INPUTPWR_FAILURE { get; set; }
 
    [JsonProperty("ENGINESTAT")]
    public string ENGINESTAT { get; set; }
 
    [JsonProperty("DLOG")]
    public string DLOG { get; set; }
 
    [JsonProperty("TRIGGER_SOURCE")]
    public string TRIGGER_SOURCE { get; set; }
 
    [JsonProperty("SWV")]
    public string SWV { get; set; }
 
    [JsonProperty("LAT")]
    public string LAT { get; set; }
 
    [JsonProperty("ROAMINGSTAT")]
    public string ROAMINGSTAT { get; set; }
 
    [JsonProperty("SEQ")]
    public string SEQ { get; set; }
 
    [JsonProperty("msg_source")]
    public string msg_source { get; set; }
 
    [JsonProperty("RELAYSTAT")]
    public string RELAYSTAT { get; set; }
 
    [JsonProperty("rectyp")]
    public string rectyp { get; set; }
 
    [JsonProperty("gps_id")]
    public string gps_id { get; set; }
 
    [JsonProperty("GUS")]
    public string GUS { get; set; }
 
    [JsonProperty("ACCSTAT")]
    public string ACCSTAT { get; set; }
 
    [JsonProperty("FAVNETSTAT")]
    public string FAVNETSTAT { get; set; }
 
    [JsonProperty("ACCUVOLTAGE_UNDERTRESHOLD")]
    public string ACCUVOLTAGE_UNDERTRESHOLD { get; set; }
 
    [JsonProperty("NST")]
    public string NST { get; set; }
 
    [JsonProperty("INPUTPWR_OVERVOLTAGE")]
    public string INPUTPWR_OVERVOLTAGE { get; set; }
 
    [JsonProperty("SOG")]
    public string SOG { get; set; }
 
    [JsonProperty("id")]
    public string id { get; set; }
 
    [JsonProperty("ERROR")]
    public string ERROR { get; set; }
 
    [JsonProperty("TIMESTAMP")]
    public string TIMESTAMP { get; set; }
 
    [JsonProperty("LON")]
    public string LON { get; set; }
 
    [JsonProperty("PANICBUTTONSTAT")]
    public string PANICBUTTONSTAT { get; set; }
 
    [JsonProperty("GSMREGSTAT")]
    public string GSMREGSTAT { get; set; }
 
    [JsonProperty("GSMLVL")]
    public string GSMLVL { get; set; }
 
    [JsonProperty("WARN")]
    public string WARN { get; set; }
 
    [JsonProperty("GPRSSTAT")]
    public string GPRSSTAT { get; set; }
 
    [JsonProperty("SBN")]
    public string SBN { get; set; }
 
  }