JSON(JavaScript Object Notation) 사용(C++, C# 또는 Visual Basic으로 작성한 Windows 런타임 앱)

Applies to Windows and Windows Phone

목적

Windows.Data.Json 네임스페이스의 기능을 사용하여 JSON(JavaScript Object Notation) 텍스트에서 값, 문자열, 개체 및 배열을 구문 분석하거나 값 형식을 JSON 텍스트로 직렬화합니다.

JSON은 개방형의 텍스트 기반 데이터 교환 형식입니다(RFC 4627 참조). 또한 플랫폼의 제한을 받지 않으며 다양한 방식으로 구현할 수 있습니다. JSON 표준에 따라 형식이 지정된 데이터는 경량이며 JavaScript 구현을 통해 믿을 수 없을 정도로 쉽게 구문 분석할 수 있습니다. JSON은 기본적으로 데이터 형식이므로 응용 프로그램이 구조화된 정보를 텍스트로서 교환 또는 저장해야 하는 거의 모든 시나리오에서 사용할 수 있습니다.

Windows 런타임 앱에서 다음 기능을 사용하여 HTTP 서버에서 JSON이 포함된 텍스트를 검색하거나 JSON이 포함된 텍스트를 HTTP 서버로 보낼 수 있습니다.

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를 만들고, JsonObject::Insert 메서드를 사용하여 새 이름/JsonValue 쌍으로 채웁니다. 완료되면 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 메서드를 사용해 검색할 수 있습니다. 다음 예에서 각각의 색인된 값은 switch case 문을 통해 실행되며, 각 JsonValue 내에 표현된 ValueType 속성은 값 검색에 사용되는 특정 메서드를 결정합니다.


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 개체를 만들고, JsonArray::Append 메서드를 JsonValue 개체로 채웁니다. 완료되면 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::GetNumber를 사용하여 결과 JsonValue에서 숫자를 검색합니다.



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::GetString을 사용하여 결과 JsonValue에서 문자열을 검색합니다.


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


문자열 값을 JSON 텍스트로서 직렬화하려면 새 JsonValue를 만들고 JsonValue::CreateStringValue로 원하는 값을 할당합니다.


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


관련 항목

다른 리소스
Windows 런타임 구성 요소에서 JSON 문자열 구문 분석
참조
C++ REST SDK
JsonArray
JsonObject
JsonValue
Windows.Data.Json
Windows.Web.Http
Windows.Web.Http.HttpClient
XML HTTP 확장 요청(IXMLHttpRequest2)
샘플
JSON 샘플

 

 

표시:
© 2014 Microsoft