亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JSON資料整理

2019-11-15 02:31:40
字體:
來源:轉載
供稿:網友

JSON資料整理

PS:JSON基礎知識整理,大神可移步

目錄

1.什么是json

2.json語法規則

3.json基礎結構

4.json基礎示例

5.JSON和xml比較

6. .NET操作JSON

原始方式

通用方式

內置方式

契約方式

通過序列化將.net對象轉換為JSON字符串

使用LINQ to JSON定制JSON數據

處理客戶端提交的JSON數據

1.什么是JSON

JSON(javaScript Object Notation) 是一種輕量級的數據交換格式。它基于Javascript的一個子集。 JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數據交換語言。易于人閱讀和編寫,同時也易于機器解析和生成。

2.JSON語法規則

JSON 語法是 JavaScript 對象表示法語法的子集。

l 數據在名稱/值對中

l 數據由逗號分隔

l 花括號保存對象

l 方括號保存數組

JSON 數據的書寫格式是:名稱/值對。

名稱/值對包括字段名稱(在雙引號中),后面寫一個冒號,然后是值:

"firstName" : "John"

這很容易理解,等價于這條 JavaScript 語句:

firstName = "John"

JSON 值可以是:

l 數字(整數或浮點數)

l 字符串(在雙引號中)

l 邏輯值(true 或 false)

l 數組(在方括號中)

l 對象(在花括號中)

l null

JSON在線校驗格式化工具:bejson

3.JSON基礎結構

JSON建構有兩種結構

JSON簡單說就是javascript中的對象和數組,所以這兩種結構就是對象和數組兩種結構,通過這兩種結構可以表示各種復雜的結構。

1、對象:對象在js中表示為“{}”括起來的內容,數據結構為 {key:value,key:value,...}的鍵值對的結構,在面向對象的語言中,key為對象的屬性,value為對應的屬性值,所以很容易理解,取值方法為 對象.key 獲取屬性值,這個屬性值的類型可以是 數字、字符串、數組、對象幾種。

2、數組:數組在js中是中括號“[]”括起來的內容,數據結構為 ["java","javascript","vb",...],取值方式和所有語言中一樣,使用索引獲取,字段值的類型可以是 數字、字符串、數組、對象幾種。

經過對象、數組2種結構就可以組合成復雜的數據結構了。

4.JSON基礎示例

簡單地說,JSON 可以將 JavaScript 對象中表示的一組數據轉換為字符串,然后就可以在函數之間輕松地傳遞這個字符串,或者在異步應用程序中將字符串從 Web 客戶機傳遞給服務器端程序。這個字符串看起來有點兒古怪,但是JavaScript很容易解釋它,而且 JSON 可以表示比"名稱 / 值對"更復雜的結構。例如,可以表示數組和復雜的對象,而不僅僅是鍵和值的簡單列表。

名稱 / 值對

按照最簡單的形式,可以用下面這樣的 JSON 表示"名稱 / 值對":

{ "firstName": "Brett" }

這個示例非?;?,而且實際上比等效的純文本"名稱 / 值對"占用更多的空間:

firstName=Brett

但是,當將多個"名稱 / 值對"串在一起時,JSON 就會體現出它的價值了。首先,可以創建包含多個"名稱 / 值對"的 記錄,比如:

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }

從語法方面來看,這與"名稱 / 值對"相比并沒有很大的優勢,但是在這種情況下 JSON 更容易使用,而且可讀性更好。例如,它明確地表示以上三個值都是同一記錄的一部分;花括號使這些值有了某種聯系。

表示數組

當需要表示一組值時,JSON 不但能夠提高可讀性,而且可以減少復雜性。例如,假設您希望表示一個人名列表。在XML中,需要許多開始標記和結束標記;如果使用典型的名稱 / 值對(就像在本系列前面文章中看到的那種名稱 / 值對),那么必須建立一種專有的數據格式,或者將鍵名稱修改為 person1-firstName這樣的形式。

如果使用 JSON,就只需將多個帶花括號的記錄分組在一起:

{"people": [                { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },                { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},                { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }            ]}

這不難理解。在這個示例中,只有一個名為 people的變量,值是包含三個條目的數組,每個條目是一個人的記錄,其中包含名、姓和電子郵件地址。上面的示例演示如何用括號將記錄組合成一個值。當然,可以使用相同的語法表示多個值(每個值包含多個記錄):

{ "

這里最值得注意的是,能夠表示多個值,每個值進而包含多個值。但是還應該注意,在不同的主條目(programmers、authors 和 musicians)之間,記錄中實際的名稱 / 值對可以不一樣。JSON 是完全動態的,允許在 JSON 結構的中間改變表示數據的方式。

在處理 JSON 格式的數據時,沒有需要遵守的預定義的約束。所以,在同樣的數據結構中,可以改變表示數據的方式,甚至可以以不同方式表示同一事物。

5.JSON和XML比較

可讀性

JSON和XML的可讀性可謂不相上下,一邊是簡易的語法,一邊是規范的標簽形式,很難分出勝負。

可擴展性

XML天生有很好的擴展性,JSON當然也有,沒有什么是XML能擴展,而JSON卻不能擴展的。不過JSON在Javascript主場作戰,可以存儲Javascript復合對象,有著xml不可比擬的優勢。

編碼難度、解碼難度(略)

實例比較

XML和JSON都使用結構化方法來標記數據,下面來做一個簡單的比較。

用XML表示中國部分省市數據如下:

<?xml version="1.0" encoding="utf-8"?><country>    <name>中國</name>    <province>        <name>黑龍江</name>        <cities>            <city>哈爾濱</city>            <city>大慶</city>        </cities>    </province>    <province>        <name>廣東</name>        <cities>            <city>廣州</city>            <city>深圳</city>            <city>珠海</city>        </cities>    </province>    <province>        <name>臺灣</name>        <cities>            <city>臺北</city>            <city>高雄</city>        </cities>    </province>    <province>        <name>新疆</name>        <cities>            <city>烏魯木齊</city>        </cities>    </province></country>

用JSON表示如下:

{    "name":"中國",    "province":[    {       "name":"黑龍江",        "cities":{            "city":["哈爾濱","大慶"]        }     },     {        "name":"廣東",        "cities":{            "city":["廣州","深圳","珠海"]        }    },    {        "name":"臺灣",        "cities":{            "city":["臺北","高雄"]        }    },    {        "name":"新疆",        "cities":{            "city":["烏魯木齊"]        }    }]}

6. .NET操作JSON

JSON文件讀入到內存中就是字符串,.NET操作JSON就是生成與解析JSON字符串。操作JSON通常有以下幾種方式:

1. 原始方式:自己按照JSON的語法格式,寫代碼直接操作JSON字符串。如非必要,應該很少人會走這條路,從頭再來的。

2. 通用方式:這種方式是使用開源的類庫Newtonsoft.Json(下載地址http://json.codeplex.com/)。下載后加入工程就能用。通常可以使用JObject, JsonReader, JsonWriter處理。這種方式最通用,也最靈活,可以隨時修改不爽的地方。

(1)使用JsonReader讀Json字符串:

string jsonText = @"{""input"" : ""value"", ""output"" : ""result""}";JsonReader reader = new JsonTextReader(new StringReader(jsonText));while (reader.Read()){    Console.WriteLine(reader.TokenType + "/t/t" + reader.ValueType + "/t/t" + reader.Value);}

(2)使用JsonWriter寫字符串:

StringWriter sw = new StringWriter();JsonWriter writer = new JsonTextWriter(sw);writer.WriteStartObject();writer.WritePropertyName("input");writer.WriteValue("value");writer.WritePropertyName("output");writer.WriteValue("result");writer.WriteEndObject();writer.Flush();string jsonText = sw.GetStringBuilder().ToString();Console.WriteLine(jsonText);

(3)使用JObject讀寫字符串:

JObject jo = JObject.Parse(jsonText);string[] values = jo.Properties().Select(item => item.Value.ToString()).ToArray();

(4)使用JsonSerializer讀寫對象(基于JsonWriter與JsonReader):

Project p = new Project() { Input = "stone", Output = "gold" };JsonSerializer serializer = new JsonSerializer();StringWriter sw = new StringWriter();serializer.Serialize(new JsonTextWriter(sw), p);Console.WriteLine(sw.GetStringBuilder().ToString());StringReader sr = new StringReader(@"{""Input"":""stone"", ""Output"":""gold""}");Project p1 = (Project)serializer.Deserialize(new JsonTextReader(sr), typeof(Project));Console.WriteLine(p1.Input + "=>" + p1.Output);

上面的代碼都是基于下面這個Project類定義:

class Project{    public string Input { get; set; }    public string Output { get; set; }}

此外,如果上面的JsonTextReader等類編譯不過的話,說明是我們自己修改過的類,換成你們自己的相關類就可以了,不影響使用。

3. 內置方式:使用.NET Framework 3.5/4.0中提供的System.Web.Script.Serialization命名空間下的JavaScriptSerializer類進行對象的序列化與反序列化,很直接。

 Project p = new Project() { Input = "stone", Output = "gold" }; JavaScriptSerializer serializer = new JavaScriptSerializer(); var json = serializer.Serialize(p); Console.WriteLine(json); var p1 = serializer.Deserialize<Project>(json); Console.WriteLine(p1.Input + "=>" + p1.Output); Console.WriteLine(ReferenceEquals(p,p1))
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品精品精品精品免费| 国产在线拍揄自揄视频不卡99| 日韩在线视频免费观看高清中文| 日韩高清免费观看| 精品久久久精品| 欧美激情欧美狂野欧美精品| 成人精品久久一区二区三区| 欧美日韩综合视频| 中文字幕视频在线免费欧美日韩综合在线看| 国产欧美中文字幕| 国产成人在线一区二区| 国产精品视频免费在线| 九九精品视频在线| 亚洲精品视频播放| 亚洲娇小xxxx欧美娇小| 国产男女猛烈无遮挡91| 亚洲色图第一页| 精品高清一区二区三区| 国产女精品视频网站免费| 国产区精品在线观看| 日韩精品在线电影| 91牛牛免费视频| 色偷偷9999www| 久久人人爽人人爽人人片av高请| 国产在线观看精品一区二区三区| 久久精品国产久精国产一老狼| 欧美人与物videos| 国精产品一区一区三区有限在线| 国产精品成人久久久久| 在线观看日韩www视频免费| 日韩电影中文字幕在线观看| 国产欧美一区二区三区久久| 亚洲激情国产精品| 亚洲天堂网在线观看| 国产精品久久久久久久av电影| 亚洲人a成www在线影院| 久久亚洲精品国产亚洲老地址| 亚洲资源在线看| 亚洲男女性事视频| 亚洲欧美国产视频| 成人黄在线观看| 88国产精品欧美一区二区三区| 欧美性高潮在线| 久久人人爽人人爽人人片亚洲| 亚洲第一精品久久忘忧草社区| 日韩最新免费不卡| 欧美国产精品va在线观看| 色青青草原桃花久久综合| 亚洲一区二区三区四区在线播放| 国产一区二区日韩| 久久久久久久久久久免费| 成人黄色片在线| 在线观看久久av| 欧美日韩性视频在线| 2019亚洲日韩新视频| 欧美日韩亚洲国产一区| 亚洲精品自拍偷拍| 欧美激情精品久久久久久黑人| 91成人福利在线| 中文字幕亚洲综合久久筱田步美| 2025国产精品视频| 亚洲精品资源在线| 欧美日韩性视频在线| 国产精品久久久久久婷婷天堂| 亚洲一区二区精品| 欧美一级片在线播放| 欧美日韩国产二区| 91精品国产乱码久久久久久久久| 亚洲乱码av中文一区二区| 国产精品久久视频| 中文字幕久热精品在线视频| 久久亚洲欧美日韩精品专区| 超碰91人人草人人干| 92版电视剧仙鹤神针在线观看| 国产福利成人在线| 成人精品aaaa网站| 日韩中文字幕精品视频| 5566成人精品视频免费| 成人a免费视频| 视频直播国产精品| 日本精品久久中文字幕佐佐木| 亚洲美女www午夜| 热99久久精品| 欧美日韩中文字幕综合视频| 欧美天堂在线观看| www国产精品视频| 亚洲欧洲成视频免费观看| 久久久久久久国产精品视频| 韩国三级电影久久久久久| 日韩高清电影好看的电视剧电影| 亚洲成人久久一区| 国产欧美 在线欧美| 91在线免费看网站| 日韩视频在线免费| 欧美中文字幕在线播放| 欧美黑人国产人伦爽爽爽| 91欧美日韩一区| 亚洲美女www午夜| 久久精品视频在线| 精品亚洲国产视频| 国产精品美女免费| 亚洲视频一区二区| 美女视频久久黄| 久久人人爽人人爽人人片av高清| 美女国内精品自产拍在线播放| 国产精品久久久久久久久久99| 国产美女扒开尿口久久久| 国产欧亚日韩视频| 一区二区在线免费视频| 国产精品黄页免费高清在线观看| 国产精品99久久99久久久二8| 久久黄色av网站| 欧美日韩一区二区在线| 国产精品美女无圣光视频| 亚洲国产欧美自拍| 中文字幕久久久| 亚洲国产成人久久| 欧美整片在线观看| 欧美高跟鞋交xxxxhd| 成人免费观看49www在线观看| 国产精品欧美一区二区三区奶水| 色伦专区97中文字幕| 精品人伦一区二区三区蜜桃网站| 国产成人在线播放| 欧美孕妇毛茸茸xxxx| 最新的欧美黄色| 色妞一区二区三区| 国产精品第8页| 亚洲人成在线电影| 久久夜色精品国产| 亚洲国产精品视频在线观看| 亚洲欧美一区二区三区四区| 亚洲图片欧美日产| 久久精品国产精品亚洲| 欧美日韩成人在线视频| 91精品国产亚洲| 日韩精品在线第一页| 欧美日韩另类在线| 欧美洲成人男女午夜视频| 国产精品美女呻吟| 91久久在线视频| 国产91网红主播在线观看| 日韩欧美国产高清91| 欧美成在线视频| 91在线国产电影| 韩国美女主播一区| 九九热精品在线| 亚洲精品福利在线| 国产精品久久久久久亚洲影视| 国产精品草莓在线免费观看| 亚洲综合成人婷婷小说| 久久综合伊人77777尤物| 日韩高清不卡av| 色综合伊人色综合网站| 国产成人福利夜色影视| 亚洲japanese制服美女| 色综合久久88色综合天天看泰| 亚洲综合视频1区| 久久久久亚洲精品国产| 亚洲性日韩精品一区二区| 2019中文在线观看| 欧美精品成人在线| 亚洲美腿欧美激情另类| 日韩影视在线观看|