對于配置JSON 文本分析器說明
我們已經介紹了如何在JSON 文本中、以及通過 Jayrock 在 .NET Framework 中使用 JSON,接下來我們來看一個關于在何處以及如何應用這些知識的實際示例??紤] ASP.NET 2.0 的客戶端腳本回調功能。
它可簡化 web 瀏覽器向 ASP.NET 頁面(或向頁面中的特定控件)發出帶外調用的過程。在典型的回調情形中,瀏覽器中的客戶端腳本將數據打包并回送到 web 服務器,由服務器端方法進行某些處理。從服務器收到響應數據后,客戶端會用它來更新瀏覽器顯示。
以下示例代碼使用 JsonTextReader 類,對包含七大洲名稱的字符串數組的 JSON 文本表示形式進行分析。每個以字母“A”開頭的洲會發送到控制臺:注意Jayrock 中的 JsonTextReader 類是一個非常自由的 JSON 文本分析器。
它實際上允許的語法要比 RFC 4627 中列出的規則所規定的有效 JSON 文本多得多。例如,就象在 JavaScript 中一樣,JsonTextReader 類允許單行和多行注釋出現在 JSON 文本內。單行注釋以雙斜杠 (//) 開頭,多行注釋以斜杠星號 (/*) 開頭,并以星號斜杠 (*/) 結尾。單行注釋甚至能以井字號 (#) 開頭。
這在 Unix 樣式的配置文件中十分常見。在所有實例中,分析器會完全跳過注釋,不會通過 API 公開。和在 JavaScript 中一樣,JsonTextReader 允許以撇號 (') 分隔 JSON 字符串。該分析器甚至可以容忍最后一個對象成員或者數組元素后面多余的逗號。#t#
即使具備所有這些附加內容,JsonTextReader 仍是符合標準的分析器!而 JsonTextWriter 則只能產生嚴格符合標準的 JSON 文本。這遵循了通常所說的可靠性原則,即“嚴以律己,寬以待人”。
要將 JSON 文本直接轉換為 .NET 對象,請使用 JsonConvert 類導入方法,指定輸出類型和 JSON 文本。以下示例顯示了從 JSON 字符串數組到 .NET 字符串數組的轉換:
- stringjsonText=@"["Europe","Asia","Australia","Antarctica",
- "NorthAmerica","SouthAmerica","Africa"]";
- using(JsonTextReaderreader=newJsonTextReader(new
- StringReader(jsonText)))
- {
- while(reader.Read())
- {
- if(reader.TokenClass==JsonTokenClass.String&
- reader.Text.StartsWith("A"))
- {
- Console.WriteLine(reader.Text);
- }
- }
- }