Ich habe Methode wie folgt:UWP und Json Parsen
public static async void DoSomething()
{
try
{
var client = new HttpClient();
var url = "http://10.0.0.68/SET Initialization";
var url2 = "http://10.0.0.68/GET Status";
var response = await client.GetAsync(url);
Debug.WriteLine(response);
response = await client.GetAsync(url2);
Debug.WriteLine(response);
var result =await response.Content.ReadAsStringAsync();
var jsonString = result.Substring(4);
var serializer = new DataContractJsonSerializer(typeof(MediaStatus));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
var data = (MediaStatus)serializer.ReadObject(ms);
Debug.Write(data.ProgNo);
}
catch (Exception exception)
{
Debug.WriteLine(exception.Message, exception.Source);
}
}
MediaStatus.cs
[DataContract]
public class MediaStatus
{
[DataMember(Name = "progNo")]
public int ProgNo { get; set; }
[DataMember(Name = "index")]
public int Index { get; set; }
[DataMember(Name = "type")]
public string Type { get; set; }
[DataMember(Name = "group")]
public int Group { get; set; }
[DataMember(Name = "msg")]
public string Msg { get; set; }
[DataMember(Name = "secondGroup")]
public int SecondGroup { get; set; }
[DataMember(Name = "playFlag")]
public int PlayFlag { get; set; }
}
ich es einfach nenne:
common.DoSomething();
Mein Problem ist, dass manchmal , der Code läuft gut und gibt mir ein Ergebnis, aber manchmal habe ich einen Fehler:
Exception thrown: 'System.Runtime.Serialization.SerializationException' in System.Private.DataContractSerialization.dll System.Private.DataContractSerialization:Expecting element 'root' from namespace ''.. Encountered 'None' with name '', namespace ''.
Ich habe zwei Mal anrufen await client.GetAsync
mit verschiedenen Urls
- zu sagen, Server, Ich mag würde mit ihm
- sprechen Info zu erhalten Status
Sie sind in einem Asynchron-Methode, warum verwenden Sie .RESULT statt von erwarten? Wie auch immer, poste den JSON, auf den er geworfen wird. Du wirst vielleicht keinen JSON zurückbekommen, der ihn werfen lässt. – Dispersia
Hallo, danke für die Antwort, ich habe es geändert in: var result = erwarten response.Content.ReadAsStringAsync(); aber hat nicht geholfen – petrtim
Es ist wahrscheinlich missgebildet JSON. Kannst du den JSON selbst veröffentlichen? –