JSON-Daten liegen in einem eigenen Format vor. Um dieses Datenformat in C# abzubilden benötigt man zuerst eine oder mehrere Klassen. Der Einfachheit halber kann man sich auf der Seite http://json2csharp.com/ aus dem JSON-Datenformat automatisiert C#-Klassen bauen lassen.
Als Beispiel dient folgende JSON-Datei:
{
"SerialNumber": "05857628",
"DateTime": "1415783932",
"Meters": [{
"InputNumber": "1",
"Name": "HZ Wirkleistung BZ 90612021",
"Type": "Electricity",
"Value": 2092224.000,
"Unit": "Wirkleistung"
},
{
"InputNumber": "2",
"Name": "HZ Blindleistung BZ 90612021",
"Type": "Electricity",
"Value": 2093763.500,
"Unit": "Blindleistung"
},
]
}
Die zugehörigen C#-Klassen sehen wie folgt aus:
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace JSONTest
{
[DataContract]
public class Meter
{
[DataMember]
public string InputNumber { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Type { get; set; }
[DataMember]
public double? Value { get; set; }
[DataMember]
public string Unit { get; set; }
}
[DataContract]
public class Meter_List
{
[DataMember]
public string SerialNumber { get; set; }
[DataMember]
public string DateTime { get; set; }
[DataMember]
public List<Meter-> Meters { get; set; }
}
}
Im Code greift man nun folgendermaßen auf die Daten zu:
// im Projektbaum Verweis hinzufügen: System.Runtime.Serialization
using System.Net;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
private void btnGetJSON_Click(object sender, EventArgs e)
{
// JSON-File von URL holen
string contents = new System.Net.WebClient().DownloadString("www.datenquelle.de");
// JSON deserialisieren
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Meter_List));
MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(contents));
Meter_List obj = (Meter_List)ser.ReadObject(stream);
// Daten ausgeben
Console.WriteLine(obj.SerialNumber);
Console.WriteLine(obj.Meters.Count);
Console.WriteLine(obj.Meters[0].Name);
}
Quelle: Serializing and Deserializing JSON in C#