使用 JavaScript 物件標記法 (JSON) (使用 C++、C# 或 Visual Basic 的 Windows 執行階段應用程式)

Applies to Windows and Windows Phone

用途

使用 Windows.Data.Json 命名空間中的功能,剖析 JavaScript 物件標記法 (JSON) 文字中的值、字串、物件和陣列,或將值類型序列化為 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);


或者,可以使用 GetAt 方法來抓取包含在 JsonArray 中的值。在下列範例中,每個已編製索引的值會透過 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