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