10分鐘掌握XML JSON及其解析 下

2021-07-09 21:06:50 字數 3596 閱讀 7862

接上文

android json所有相關類,都在org.json包下。

包括jsonobject、jsonarray、jsonstringer、jsontokener、jsonwriter、jsonexception。

目前json解析有2種方法,分別是get和opt方法,可以使用json

那麼使用get方法與使用opt方法的區別是?

jsonobject方法,opt與get建議使用opt方法,因為get方法如果其內容為空會直接丟擲異常。不過jsonarray.opt(index)會有越界問題需要特別注意。

opt、optboolean、optdouble、optint、optlong、optstring、optjsonarray、optjsonobject get、getboolean、getdouble、getint、getlong、getstring、getjsonarray、getjsonobject

在android中應該如何建立json呢?

下面展示了乙個如何建立json的例子:

private string createjson() throws jsonexception

其輸出結果如下所示:

}

第一步,需要從網路伺服器上發起請求,獲取到json資料:

jsonobjectrequest jsonobjrequest = new jsonobjectrequest(request.method.get, url, null,

new response.listener() catch (exception e) }

}, new response.errorlistener() else if (error

* instanceof clienterror) else if (error instanceof

* servererror) else if (error instanceof

* authfailureerror) else if (error instanceof

* parseerror) else if (error instanceof

* noconnectionerror) else if (error instanceof

* timeouterror)

*/mylog.e(tag, "onerrorresponse, error=" + error); }

}) };

第二步,獲取到對應的對應的jsonobject資料:

public void getjsonobjectstring(string url) catch (jsonexception e)

if (jsonarray == null)

mchannellist = videoutils.parsevideojsonarray(jsonarray);

if (isloading) else

} else else }

}}, new response.errorlistener()

});

jsobjrequest.settag(tag);

jsobjrequest.setshouldcache(true);

mqueue.add(jsobjrequest);

mqueue.start(); }

獲取到json object之後,就對這個jsonobject進行解析:

private arraylistparsevideoalbumjsonobject(jsonobject albumjsonobject,  arraylistalbumidjsonarraylist)

arraylistvideos = new arraylist();

try

} catch (jsonexception e)

return videos; }

上面介紹都是使用android提供的原生類解析json,最大的好處是專案不需要引入第三方庫,但是如果比較注重開發效率而且不在意應用大小增加幾百k的話,有以下json可供選擇:

jackson

google-gson

json-lib

json和xml就像武林界的屠龍刀和倚天劍,那麼他們孰強孰弱?

xml長期執資料傳輸界之牛耳,而json作為後起之秀,已經盟主發起了挑戰。

那就讓他們來進行pk一下:

總之: json 比 xml 更小、更快,更易解析。

xml的主要組成成分:

xml是element、attribute和element content。

json的主要組成成分:

json是object、array、string、number、boolean(true/false)和null。

xml要表示乙個object(指name-value pair的集合),最初可能會使用element作為object,每個key-value pair 用 attribute 表示:

但如個某個 value 也是 object,那麼就不可以當作attribute:

china

guang dong

......

...

那麼,什麼時候用element,什麼時候用attribute,就已經是乙個問題了。

而json因為有object這種型別,可以自然地對映,不需考慮上述的問題,自然地得到以下的格式。

}

one more thing…

xml需要選擇怎麼處理element content的換行,而json string則不須作這個選擇。

xml只有文字,沒有預設的數字格式,而json則有明確的number格式,這樣在locale上也安全。

xml對映陣列沒大問題,就是陣列元素tag比較重複冗餘。json 比較易讀。

json的true/false/null也能容易統一至一般程式語言的對應語義。

xml文件可以附上dtd、schema,還有一堆的諸如xpath之類規範,使用自定義xml元素或屬性,能很方便地給資料附加各種約束條件和關聯額外資訊,從資料表達能力上看,xml強於json,但是很多場景並不需要這麼複雜的重量級的東西,輕便靈活的json就顯得很受歡迎了。

打個比方,如果完成某件事有兩種方式:一種簡單的,乙個複雜的。你選哪個?

我只想殺只雞罷了,用得著牛刀?

json與xml相比就是這樣的。

這篇文章只是對xml和json這2種目前主流使用的資料格式進行了解釋,並系統的學習了其中的語法及如何進行解析,同時在最好針對xml和json做了對比,了解其不同點和各自的優勢。

10分鐘掌握運輸問題(一)

原文開啟更好看哦 原文章 運輸問題的解答一般分為三個步驟,今天只講解第乙個問題 1.初始基本可行解的確定 2.基本可行解的最優性檢驗 3.方案的調整 針對問題一 初始基本可行解的確定分為兩種方法 1 最小元素法 該方法是最貼近日常思維的,但同時也是準確率較低的。最小元素法的基本思想是就近 即先從運價...

Git 簡單命令(10分鐘掌握git

設定使用者資訊git config global username yourname git config global user.email youremail 檢視配置資訊git config list git config user.name 本地初始化乙個git倉庫 git init從遠端倉...

30分鐘掌握 氣泡排序

演算法步驟 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。我的理解 氣泡排序在整個...