1. 程式人生 > >android中json解析及使用 (下)

android中json解析及使用 (下)

android中 edi token ims stream 一個 ace follow ipp

接上文
七、通過JSONTokener來解析json文本 7.1、將json文本解析為對象 我們可以通過JSONTokener的nextValue()來獲得JSONObject對象,然後再通過JSONObject對象來做進一步的解析。 實例4

void startJSONTokenerDemo(){ finalString JSON = "{"+ " \"phone\" : [\"12345678\", \"87654321\"],"+
" \"name\" : \"yuanzhifei89\","+ " \"age\" : 100,"+ " \"address\" : { \"country\" : \"china\", \"province\" : \"jiangsu\" },"+ " \"married\" : false,"+ "}"; try{
JSONTokener jsonTokener =newJSONTokener(JSON); /* 此時還未讀取任何json文本,直接讀取就是一個JSONObject對象。 如果此時的讀取位置在"name" : 了,那麽nextValue就是"yuanzhifei89"(String) */ JSONObject person =(JSONObject) jsonTokener
.nextValue(); /* 接下來的就是JSON對象的操作了 */ person.getJSONArray("phone"); person.getString("name"); person.getInt("age"); person.getJSONObject("address"); person.getBoolean("married"); }catch(JSONException ex){ /*異常處理代碼 */ } }

7.2、將json文本解析為文本 我們可以通過JSONTokener的一些方法將json文本解析為文本 實例5

void startJSONTokenerDemo2(){ finalString JSON = "{"+ " \"phone\" : [\"12345678\", \"87654321\"],"+ " \"name\" : \"yuanzhifei89\","+ " \"age\" : 100,"+ " \"address\" : { \"country\" : \"china\", \"province\" : \"jiangsu\" },"+ " \"married\" : false,"+ "}"; try{ JSONTokener jsonTokener =newJSONTokener(JSON); /* 繼續向下讀json文本中的8個字符。此時剛開始,即在{處 */ Log.i(tag,"jsonTokener.next(8)|"+jsonTokener.next(8)); /* 繼續向下讀json文本中的1個字符 */ Log.i(tag,"jsonTokener.next()|"+jsonTokener.next()); /* 繼續向下讀取一個json文本中的字符。該字符不是空白、同時也不是註釋中的字符 */ Log.i(tag,"jjsonTokener.nextClean()|"+jsonTokener.nextClean()); /* 返回當前的讀取位置到第一次遇到‘a‘之間的字符串(不包括a)。 */ Log.i(tag,"jsonTokener.nextString(‘a‘)|"+jsonTokener.nextString(‘a‘)); /* 返回當前讀取位置到第一次遇到字符串中(如"0089")任意字符之間的字符串,同時該字符是trimmed的。(此處就是第一次遇到了89)*/ Log.i(tag,"jsonTokener.nextTo(\"0089\")|"+jsonTokener.nextTo("0089")); /* 讀取位置回退一個 */ jsonTokener.back(); Log.i(tag,"jsonTokener.back()"); Log.i(tag,"jsonTokener.next()|"+jsonTokener.next()); /* 讀取位置前進到指定字符串處(包括字符串)*/ jsonTokener.skipPast("address"); Log.i(tag,"skipPast(\"address\")"); Log.i(tag,"jsonTokener.next(8)|"+jsonTokener.next(8)); /* 讀取位置前進到執行字符處(不包括字符) */ Log.i(tag,"jsonTokener.skipTo(‘m‘)|"+jsonTokener.skipTo(‘m‘)); jsonTokener.next(8); Log.i(tag,"jsonTokener.next(8)|"+jsonTokener.next(8)); }catch(JSONException ex){ // 異常處理代碼 } }

運行結果: 03-28 22:05:03.800: I/robin(10412): jsonTokener.next(8)|{ "pho 03-28 22:05:03.800: I/robin(10412): jsonTokener.next()|n 03-28 22:05:03.800: I/robin(10412): jjsonTokener.nextClean()|e 03-28 22:05:03.800: I/robin(10412): jsonTokener.nextString(‘a‘)|" : ["12345678", "87654321"], "n 03-28 22:05:03.800: I/robin(10412): jsonTokener.nextTo("0089")|me" : "yuanzhifei 03-28 22:05:03.800: I/robin(10412): jsonTokener.back() 03-28 22:05:03.800: I/robin(10412): jsonTokener.next()|i 03-28 22:05:03.800: I/robin(10412): skipPast("address") 03-28 22:05:03.800: I/robin(10412): jsonTokener.next(8)|" : { "c 03-28 22:05:03.800: I/robin(10412): jsonTokener.skipTo(‘m‘)|m 03-28 22:05:03.810: I/robin(10412): jsonTokener.next(8)| : false 八、JsonReader 原文:http://tonysun3544.iteye.com/blog/1330027 在google android中也有關於解析JSON的類庫:java.io.JsonReader,但是只能在3.0以後的版本中才可以用,在這裏我們用google提供的類庫google-gson,可以從code.google.com/p/google-gson/下載jar包。 下面通過一個小例子來學習一下: 例子: [{"name":"zhangsan","age":22},{"name":"lisi","age":23}] 分析: 1.開始解析數組 2.開始解析對象 3.解析鍵值對 4.解析鍵值對 5.解析對象結束 6.開始解析對象 7.解析鍵值對 8.解析鍵值對 9.解析對象結束 10.解析數組結束 示例8

void startJsonReaderDemo(){ privateString jsonData ="[{\"name\":\"zhangsan\",\"age\":22},{\"name\":\"lisi\",\"age\":23}]"; JsonReader reader =newJsonReader(newStringReader(jsonData)); try { reader.beginArray();/* 開始解析數組 */ while(reader.hasNext()) { reader.beginObject();/* 開始解析對象 */ while(reader.hasNext()) { String tagName = reader.nextName();/* 得到鍵值對中的key */ /* key為name時/* if (tagName.equals("name")) { Log.i(tag, "name--------->" + reader.nextString()); /* 得到key中的內容 */ }elseif(tagName.equals("age"))/* key為age時*/ { Log.i(tag,"age--------->"+ reader.nextInt());/* 得到key中的內容 */ } } reader.endObject(); } reader.endArray(); }catch(IOException e) { e.printStackTrace(); } }

結束

再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!http://www.captainbed.net

android中json解析及使用 (下)