Использование нотации объектов JavaScript (JSON) (приложения среды выполнения Windows на C++, C# или Visual Basic)

Applies to Windows and Windows Phone

Назначение

Различные функции пространства имен Windows.Data.Json позволяют проводить синтаксический анализ значений, строк, объектов и массивов в тексте с нотацией объектов JavaScript (JSON) или сериализовывать типы значения в текст JSON.

JSON — это открытый текстовый формат обмена данными (см. RFC 4627). Он не зависит от платформы, и для него доступны разнообразные реализации. Данные, форматированные по стандарту JSON, имеют небольшой размер и обеспечивают замечательную легкость синтаксического анализа в реализациях JavaScript. Так как JSON — это, в первую очередь, формат данных, его можно использовать практически в любых сценариях, где приложениям требуется обмениваться структурированной информацией или сохранять ее в виде текста.

В приложении среды выполнения Windows можно использовать следующие возможности для получения с HTTP-сервера и отправки на HTTP-сервер текста, содержащего объекты JSON.

Parsing JSON and serializing data into JSON

В следующих разделах будет показано, как анализировать текст JSON на наличие значений чисел, строк, объектов и массивов и представлять каждое из них в виде управляемых объектов или принимать значения, преобразовывать их в объекты и сериализовать их в JSON.

Objects

Выполните десериализацию объекта из текста JSON в JsonObject и получите именованные значения, которые он содержит.


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");


Создайте новый объект JsonObject и заполните его новыми парами имя/JsonValue с помощью метода JsonObject::Insert. После этого вызовите JsonObject::Stringify, чтобы сериализовать JsonObject как текст JSON.


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

Выполните десериализацию массива из текста JSON в JsonArray и получите индексированные значения, которые он содержит.


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);


Кроме того, значения, содержащиеся в JsonArray, можно получить с помощью метода GetAt. В следующем примере каждое индексированное значение пропускается через оператор смены регистра, свойство ValueType, выраженное в каждом значении JsonValue, определяющем отдельный метод, который используется для получения этого значения.


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;
       // ...
    }
}


Создайте новый объект JsonArray и заполните его объектами JsonValue с помощью метода JsonArray::Append. После этого вызовите JsonArray::Stringify, чтобы сериализовать JsonArray как текст JSON.


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

Выполните анализ числового значения из текста JSON и получите число из результирующего JsonValue с помощью JsonValue::GetNumber



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


Чтобы сериализовать численное значение как текст JSON, создайте новый объект JsonValue и назначьте нужное значение с помощью JsonValue::CreateNumberValue.


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


Strings

Выполните анализ строкового значения из текста JSON и получите строку из результирующего JsonValue с помощью JsonValue::GetString


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


Чтобы сериализовать строковое значение как текст JSON, создайте новый объект JsonValue и назначьте нужное значение с помощью JsonValue::CreateStringValue.


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


Связанные разделы

Другие ресурсы
Синтаксический анализ строк JSON в компонентах среды выполнения Windows
Ссылки
Пакет SDK C++ REST
JsonArray
JsonObject
JsonValue
Windows.Data.Json
Windows.Web.Http
Windows.Web.Http.HttpClient
Расширенный HTTP-запрос XML (IXMLHttpRequest2)
Примеры
Пример Json

 

 

Показ:
© 2015 Microsoft