Verwenden von JavaScript Object Notation (JSON) (Windows-Runtime-Apps mit C++, C# oder Visual Basic)

Applies to Windows and Windows Phone

Zweck

Mithilfe der Features im Windows.Data.Json-Namespace können Sie Werte, Zeichenfolgen, Objekte und Arrays aus JavaScript Object Notation (JSON)-Text analysieren oder Werttypen in JSON-Text serialisieren.

JSON ist ein offenes textbasiertes Datenaustauschformat (siehe RFC 4627). Das Format ist plattformunabhängig und in zahlreichen Implementierungen verfügbar. Nach dem JSON-Standard formatierte Daten sind kompakt und können unglaublich leicht von JavaScript-Implementierungen analysiert werden. Da es sich in erster Linie um ein Datenformat handelt, kann JSON in praktisch jedem Szenario verwendet werden, in dem Anwendungen strukturierte Informationen als Text austauschen oder speichern müssen.

Mit den folgenden Features kann in einer Windows-Runtime-App Text mit JSON von einem HTTP-Server abgerufen oder an einen HTTP-Server gesendet werden.

Parsing JSON and serializing data into JSON

In den folgenden Abschnitten wird gezeigt, wie Sie JSON-Text im Hinblick auf Zahl-, Zeichenfolgen-, Objekt- und Arraywerte analysieren und jeden Wert als verwaltbares Objekt darstellen oder die Werte einlesen und in Objekte konvertieren und zu JSON serialisieren.

Objects

Deserialisieren Sie ein Objekt aus JSON-Text in ein JsonObject-Objekt, und rufen Sie die benannten Werte ab, die es enthält.


JsonValue jsonValue = JsonValue.Parse("{\"Width\": 800, \"Height\": 600, \"Title\": \"View from 15th Floor\", \"IDs\": [116, 943, 234, 38793]}");
double width = jsonValue.GetObject().GetNamedNumber("Width");
double height = jsonValue.GetObject().GetNamedNumber("Height");
string title = jsonValue.GetObject().GetNamedString("Title");
JsonArray ids = jsonValue.GetObject().GetNamedArray("IDs");


Erstellen Sie ein neues JsonObject-Objekt, und füllen Sie es mit neuen Name/JsonValue-Paaren auf. Verwenden Sie hierfür die JsonObject::Insert-Methode. Wenn Sie fertig sind, rufen Sie JsonObject::Stringify auf, um JsonObject als JSON-Text zu serialisieren.


JsonObject jsonObject = new JsonObject();
jsonObject["Width"] = JsonValue.CreateNumberValue(800);
jsonObject["Height"] = JsonValue.CreateNumberValue(600);
jsonObject["Title"] = JsonValue.CreateStringValue("View from 15th Floor");
jsonObject["IDs"] = JsonValue.Parse("[116, 943, 234, 38793]");
string jsonString = jsonObject.Stringify();


Arrays

Deserialisieren Sie ein Array aus JSON-Text in ein JsonArray-Objekt, und rufen Sie die indizierten Werte ab, die es enthält.


JsonValue jsonValue = JsonValue.Parse("[116, 3.14159, true, \"abc\"]");
double element1 = jsonValue.GetArray().GetNumberAt(0);
double element2 = jsonValue.GetArray().GetNumberAt(1);
bool element3 = jsonValue.GetArray().GetBooleanAt(2);
string element4 = jsonValue.GetArray().GetStringAt(3);


Stattdessen können die in einem JsonArray-Objekt enthaltenen Werte auch mit der GetAt-Methode abgerufen werden. Im folgenden Beispiel durchläuft jeder indizierte Wert eine switch-case-Anweisung, wobei die ValueType-Eigenschaft, die in jedem JsonValue-Objekt ausgedrückt ist, die konkrete Methode bestimmt, die zum Abrufen des Werts verwendet wird.


JsonValue jsonValue = JsonValue.Parse("[116, 3.14159, true, \"abc\"]");
int arraySize = jsonValue.GetArray().Count;
for (int i = 0; i < arraySize; i++)
{
    IJsonValue element = jsonValue.GetArray()[i];
    switch (element.ValueType)
    {
       case JsonValueType.Number:
           double numberValue = element.GetNumber();
           break;
       // ...
    }
}


Erstellen Sie ein neues JsonArray-Objekt, und füllen Sie es mit JsonValue-Objekten auf. Verwenden Sie hierfür die JsonArray::Append-Methode. Wenn Sie fertig sind, rufen Sie JsonArray::Stringify auf, um JsonArray als JSON-Text zu serialisieren.


JsonArray jsonArray = new JsonArray();
jsonArray.Add(JsonValue.CreateNumberValue(116));
jsonArray.Add(JsonValue.CreateNumberValue(3.14159));
jsonArray.Add(JsonValue.CreateBooleanValue(true));
jsonArray.Add(JsonValue.CreateStringValue("abc"));
string jsonString = jsonArray.Stringify();


Numbers

Deserialisieren Sie einen Zahlwert aus JSON-Text, und rufen Sie die Zahl aus dem daraus resultierenden JsonValue-Objekt mithilfe von JsonValue::GetNumber ab.



JsonValue jsonValue = JsonValue.Parse("5");
double numberValue = jsonValue.GetNumber();


Um einen Zahlwert als JSON-Text zu serialisieren, erstellen Sie ein neues JsonValue-Objekt und weisen den gewünschten Wert mit JsonValue::CreateNumberValue zu.


JsonValue jsonValue = JsonValue.CreateNumberValue(5);
string jsonString = jsonValue.Stringify();


Strings

Deserialisieren Sie einen Zeichenfolgenwert aus JSON-Text, und rufen Sie die Zeichenfolge aus dem daraus resultierenden JsonValue-Objekt mithilfe von JsonValue::GetString ab.


JsonValue jsonValue = JsonValue.Parse("\"test string\"");
string stringValue = jsonValue.GetString();


Um einen Zeichenfolgenwert als JSON-Text zu serialisieren, erstellen Sie ein neues JsonValue-Objekt und weisen den gewünschten Wert mit JsonValue::CreateStringValue zu.


JsonValue jsonValue = JsonValue.CreateStringValue("test string");
string jsonString = jsonValue.Stringify();


Verwandte Themen

Weitere Ressourcen
Analysieren von JSON-Zeichenfolgen in Windows-Runtime-Komponenten
Referenzen
C++-REST-SDK
JsonArray
JsonObject
JsonValue
Windows.Data.Json
Windows.Web.Http
Windows.Web.Http.HttpClient
Erweiterte XML-HTTP-Anforderung (IXMLHttpRequest2)
Beispiele
JSON-Beispiel

 

 

Anzeigen:
© 2014 Microsoft