Json介紹以及解析Json

2022-09-20 05:39:08 字數 2734 閱讀 4071

首先,介紹一下json字串,以下json的介紹引用網上資料。

簡單地說

,json 可以將 j**ascript 物件中表示的一組資料轉換為字串,然後就可以在函式之間輕鬆地傳遞這個字串,或者在非同步應用程式中將字串從 web 客戶機傳遞給伺服器端程式。這個字串看起來有點兒古怪,但是 j**ascript 很容易解釋它,而且 json 可以表示比"名稱 / 值對"更複雜的結構。例如,可以表示陣列和複雜的物件,而不僅僅是鍵和值的簡單列表。

簡單地說

,json 可以將 j**ascript 物件中表示的一組資料轉換為字串,然後就可以在函式之間輕鬆地傳遞這個字串,或者在非同步應用程式中將字串從 web 客戶機傳遞給伺服器端程式。這個字串看起來有點兒古怪,但是 j**ascript 很容易解釋它,而且 json 可以表示比"名稱 / 值對"更複雜的結構。例如,可以表示陣列和複雜的物件,而不僅僅是鍵和值的簡單列表。

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

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

firstname=brett 

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

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

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

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

, , 

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

, , 

],"authors": [ 

, , 

], "musicians": [ ,  

] } 

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

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

總的來說,json有兩種結構:

1. name/value pair 的集合(collection of name-value pairs)。每個pair的name與value用【:】分隔;每個name/value pair 用【,】分隔;name/value pair 的集合的以【{}】作為開始與結束。

2. value 的有序列表(list of many values)。每個value用【,】分隔,value的有序列表以【】作為開始與結束。

上面兩種結構可以互相巢狀。如上面的例子中,大的集合中包含了三個name/value pair,即 。其中value1, value2, value3又分別是乙個value的有序列表。列表中的每個value元素又是name/value pair 的集合。例如value1的列表中第乙個value元素是三個name/value pair的集合,即 以【,】分隔後,第二個value元素又是乙個name/value pair的集合,即 以【,】分隔後,第三個value元素又是乙個name/value pair的集合,即  。至此"people : value1" 的name/value pair結束,以【,】分隔是第二個name/value pair,即"authors" : "value2"

如此巢狀 ..

假設有如下的json字串:

,],"queryviewportkey":"geo_query"}

1) 寫乙個轉化類

private

class

filterresult

public

string queryviewportkey

}private

class

condition

public

string comparevalue

public

string dimensionid

}

2)使用

filterresult _filterresult = new

filterresult();

_filterresult = jsonconvert.deserializeobject(filterexpression);

console.writeline(_filterresult.queryviewportkey)

foreach (condition condition in _filterresult.conditions)

console.writeline(condition.compareoperator + " " + condition.comparevalue + " " + condition.dimensionid)

Json解析的簡單介紹

json解析的簡單介紹 json是一款輕量級的資料交換格式 解析json需要兩個類 jsonobject 描述乙個json物件 jsonarray 描述乙個json陣列 下面是json解析的乙個簡單的小例子,通過這個例子應該能使像我一樣的一些新手可以簡單的理解一下json,並且 可以簡單的使用jso...

json原生解析以及Gson解析陣列

private handler handler new handler 對應的,解析出來是物件 一種是 對應的,這種是陣列或者集合 1.集合或者資料在 json 原生解析 使用的 jsonarray 這個類.對應的在原聲解析裡面是 jsonobject 2.使用 gson 解析陣列格式的 json ...

JSON庫解析json檔案

cocoa 下json開源的類庫有很多,其中jsonkit庫是非常簡單易用而且效率又比較高的。解析 舉例 import jsonkit.h 假設 strjson 是網路上接收到的 json 字串,nsstring strjson bage 3,sound def.nsdictionary resul...