對于配置JSON 文本分析器說明
我們已經(jīng)介紹了如何在JSON 文本中、以及通過 Jayrock 在 .NET Framework 中使用 JSON,接下來我們來看一個關(guān)于在何處以及如何應(yīng)用這些知識的實際示例??紤] ASP.NET 2.0 的客戶端腳本回調(diào)功能。
它可簡化 web 瀏覽器向 ASP.NET 頁面(或向頁面中的特定控件)發(fā)出帶外調(diào)用的過程。在典型的回調(diào)情形中,瀏覽器中的客戶端腳本將數(shù)據(jù)打包并回送到 web 服務(wù)器,由服務(wù)器端方法進(jìn)行某些處理。從服務(wù)器收到響應(yīng)數(shù)據(jù)后,客戶端會用它來更新瀏覽器顯示。
以下示例代碼使用 JsonTextReader 類,對包含七大洲名稱的字符串?dāng)?shù)組的 JSON 文本表示形式進(jìn)行分析。每個以字母“A”開頭的洲會發(fā)送到控制臺:注意Jayrock 中的 JsonTextReader 類是一個非常自由的 JSON 文本分析器。
它實際上允許的語法要比 RFC 4627 中列出的規(guī)則所規(guī)定的有效 JSON 文本多得多。例如,就象在 JavaScript 中一樣,JsonTextReader 類允許單行和多行注釋出現(xiàn)在 JSON 文本內(nèi)。單行注釋以雙斜杠 (//) 開頭,多行注釋以斜杠星號 (/*) 開頭,并以星號斜杠 (*/) 結(jié)尾。單行注釋甚至能以井字號 (#) 開頭。
這在 Unix 樣式的配置文件中十分常見。在所有實例中,分析器會完全跳過注釋,不會通過 API 公開。和在 JavaScript 中一樣,JsonTextReader 允許以撇號 (') 分隔 JSON 字符串。該分析器甚至可以容忍最后一個對象成員或者數(shù)組元素后面多余的逗號。#t#
即使具備所有這些附加內(nèi)容,JsonTextReader 仍是符合標(biāo)準(zhǔn)的分析器!而 JsonTextWriter 則只能產(chǎn)生嚴(yán)格符合標(biāo)準(zhǔn)的 JSON 文本。這遵循了通常所說的可靠性原則,即“嚴(yán)以律己,寬以待人”。
要將 JSON 文本直接轉(zhuǎn)換為 .NET 對象,請使用 JsonConvert 類導(dǎo)入方法,指定輸出類型和 JSON 文本。以下示例顯示了從 JSON 字符串數(shù)組到 .NET 字符串?dāng)?shù)組的轉(zhuǎn)換:
- 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);
- }
- }
- }