android json解析

一、JSON的定义
         JSON是 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为
二、JSON 与XML
1.JSON和XML的数据可读性基本相同
2.JSON和XML同样拥有丰富的解析手段
3.JSON相对于XML来讲,数据的体积小
4.JSON与JavaScript的交互更加方便
5.JSON对数据的描述性比XML较差
6.JSON的速度要远远快于XML
关于json的更多内容请访问的官网 http://www.json.org/
三、android2.3提供的json解析类 
android的json解析部分都在包org.json下,主要有以下几个类: 
JSONObject可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。它对外部(External:   应用 toString() 方法输出的数值)调用的响应体现为一个 标准的字符串 (例如:{"JSON": "Hello, World"},最外被大括号包裹,其中的Key和Value被冒号":"分隔)。其对于内部(Internal)行为的操作格式略微,例如:初始化一个JSONObject实例,引用内部的put()方法添加数值:new JSONObject().put("JSON", "Hello, World!"),在Key和Value之间是以逗号","分隔。Value的类型包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object 。
JSONStringerjson文本构建类 ,根据官方的解释,这个类可以帮助快速和便捷的创建JSON text。其最大的优点在于可以减少由于 格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。
JSONArray 它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如:     [value1,value2,value3],大家可以亲自利用简短的代码更加直观的了解其格式)。这个类的内部同样具有查询行为,     get()和opt()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。同样这个类的value类型可以包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。
JSONTokener:json解析类 
JSONException:json中用到的异常 
四、使用JSONObject与JSONArray来构建json文本
实例1
<div><span class="kwd" style="color:#0088;">void</span><span class="pln"> startBuildJsonTextDemo</span><span class="pun" style="color:#66660;">()</span></div><div><span class="pln">    </span><span class="pun" style="color:#66660;">{</span></div><div><span class="pln">        </span><span class="com" style="color:#8800;">/*</span></div><div><span class="com" style="color:#8800;">                        假设现在要创建这样一个json文本 </span></div><div><span class="com" style="color:#8800;">          { "phone" : ["12345678", "87654321","02887188812"], </span></div><div><span class="com" style="color:#8800;">          "name" : "yuanzhifei89", </span></div><div><span class="com" style="color:#8800;">          "age"  : 100,  "address" : { "country" :</span></div><div><span class="com" style="color:#8800;">          "china", "province" : "jiangsu" }, </span></div><div><span class="com" style="color:#8800;">          "married" : false }</span></div><div><span class="com" style="color:#8800;">         */</span></div><div><span class="pln">        </span><span class="kwd" style="color:#0088;">try</span></div><div><span class="pln">        </span><span class="pun" style="color:#66660;">{</span></div><div><span class="pln">            </span><span class="com" style="color:#8800;">/* 首先最外层是{},是创建一个对象*/</span></div><div><span class="pln">            </span><span class="typ" style="color:#66066;">JSONObject</span><span class="pln"> person </span><span class="pun" style="color:#66660;">=</span><span class="pln"> </span><span class="kwd" style="color:#0088;">new</span><span class="pln"> </span><span class="typ" style="color:#66066;">JSONObject</span><span class="pun" style="color:#66660;">();</span></div><div><span class="pln">            </span><span class="com" style="color:#8800;">/* 第一个键phone的值是数组,所以需要创建数组对象*/</span></div><div><span class="pln">            </span><span class="typ" style="color:#66066;">JSONArray</span><span class="pln"> phone </span><span class="pun" style="color:#66660;">=</span><span class="pln"> </span><span class="kwd" style="color:#0088;">new</span><span class="pln"> </span><span class="typ" style="color:#66066;">JSONArray</span><span class="pun" style="color:#66660;">();</span></div><div><span class="pln">            phone</span><span class="pun" style="color:#66660;">.</span><span class="pln">put</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"12345678"</span><span class="pun" style="color:#66660;">).</span><span class="pln">put</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"87654321"</span><span class="pun" style="color:#66660;">);</span></div><div><span class="pln">            phone</span><span class="pun" style="color:#66660;">.</span><span class="pln">put</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"02887188812"</span><span class="pun" style="color:#66660;">);</span></div><div><span class="pln">            person</span><span class="pun" style="color:#66660;">.</span><span class="pln">put</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"phone"</span><span class="pun" style="color:#66660;">,</span><span class="pln"> phone</span><span class="pun" style="color:#66660;">);</span></div><div>
</div><div><span class="pln">            person</span><span class="pun" style="color:#66660;">.</span><span class="pln">put</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"name"</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="str" style="color:#0880;">"yuanzhifei89"</span><span class="pun" style="color:#66660;">);</span></div><div><span class="pln">            person</span><span class="pun" style="color:#66660;">.</span><span class="pln">put</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"age"</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="lit" style="color:#06666;">100</span><span class="pun" style="color:#66660;">);</span></div><div><span class="pln">            </span><span class="com" style="color:#8800;">/* 键address的值是对象,所以又要创建一个对象*/</span></div><div><span class="pln">            </span><span class="typ" style="color:#66066;">JSONObject</span><span class="pln"> address </span><span class="pun" style="color:#66660;">=</span><span class="pln"> </span><span class="kwd" style="color:#0088;">new</span><span class="pln"> </span><span class="typ" style="color:#66066;">JSONObject</span><span class="pun" style="color:#66660;">();</span></div><div><span class="pln">            address</span><span class="pun" style="color:#66660;">.</span><span class="pln">put</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"country"</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="str" style="color:#0880;">"china"</span><span class="pun" style="color:#66660;">);</span></div><div><span class="pln">            address</span><span class="pun" style="color:#66660;">.</span><span class="pln">put</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"province"</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="str" style="color:#0880;">"jiangsu"</span><span class="pun" style="color:#66660;">);</span></div><div><span class="pln">            person</span><span class="pun" style="color:#66660;">.</span><span class="pln">put</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"address"</span><span class="pun" style="color:#66660;">,</span><span class="pln"> address</span><span class="pun" style="color:#66660;">);</span></div><div><span class="pln">            person</span><span class="pun" style="color:#66660;">.</span><span class="pln">put</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"married"</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="kwd" style="color:#0088;">false</span><span class="pun" style="color:#66660;">);</span></div><div><span class="pln">            </span><span class="typ" style="color:#66066;">Log</span><span class="pun" style="color:#66660;">.</span><span class="pln">i</span><span class="pun" style="color:#66660;">(</span><span class="pln">tag</span><span class="pun" style="color:#66660;">,</span><span class="pln">person</span><span class="pun" style="color:#66660;">.</span><span class="pln">toString</span><span class="pun" style="color:#66660;">());</span></div><div><span class="pln">        </span><span class="pun" style="color:#66660;">}</span><span class="pln"> </span><span class="kwd" style="color:#0088;">catch</span><span class="pln"> </span><span class="pun" style="color:#66660;">(</span><span class="typ" style="color:#66066;">JSONException</span><span class="pln"> ex</span><span class="pun" style="color:#66660;">)</span></div><div><span class="pln">        </span><span class="pun" style="color:#66660;">{</span></div><div><span class="pln">            </span><span class="com" style="color:#8800;">/*键为null或使用json不支持的数字格式(NaN, infinities)*/</span></div><div><span class="pln">            </span><span class="kwd" style="color:#0088;">throw</span><span class="pln"> </span><span class="kwd" style="color:#0088;">new</span><span class="pln"> </span><span class="typ" style="color:#66066;">RuntimeException</span><span class="pun" style="color:#66660;">(</span><span class="pln">ex</span><span class="pun" style="color:#66660;">);</span></div><div><span class="pln">        </span><span class="pun" style="color:#66660;">}</span></div><div><span class="pln">    </span><span class="pun" style="color:#66660;">}</span></div>
运行结果
03-28 21:32:51.095: I/robin(9617):  {"phone":["12345678","87654321","02887188812"],"married":false,"address":{"province":"jiangsu","country":"china"},"age":100,"name":"yuanzhifei89"}
五、使用JSONStringer来构建json文本
除了JSONObject与JSONArray两个类,还可以使用JSONStringer来构建json文本  
实例2
<div><span class="pln">  </span><span class="kwd" style="color:#0088;">void</span><span class="pln"> startBuildJsonTextDemo2</span><span class="pun" style="color:#66660;">(){</span></div><div><span class="pln">        </span><span class="kwd" style="color:#0088;">try</span><span class="pln"> </span><span class="pun" style="color:#66660;">{</span><span class="pln">  </span></div><div><span class="pln">            </span><span class="typ" style="color:#66066;">JSONStringer</span><span class="pln"> jsonText </span><span class="pun" style="color:#66660;">=</span><span class="pln"> </span><span class="kwd" style="color:#0088;">new</span><span class="pln"> </span><span class="typ" style="color:#66066;">JSONStringer</span><span class="pun" style="color:#66660;">();</span><span class="pln">  </span></div><div><span class="pln">            </span><span class="com" style="color:#8800;">/* 首先是{,对象开始。object和endObject必须配对使用  */</span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="kwd" style="color:#0088;">object</span><span class="pun" style="color:#66660;">();</span><span class="pln">  </span></div><div><span class="pln">              </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">key</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"phone"</span><span class="pun" style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">            </span><span class="com" style="color:#8800;">/* 键phone的值是数组。array和endArray必须配对使用 */</span><span class="pln"> </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">array</span><span class="pun" style="color:#66660;">();</span><span class="pln">  </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">value</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"12345678"</span><span class="pun" style="color:#66660;">).</span><span class="pln">value</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"87654321"</span><span class="pun" style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">value</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"02887188812"</span><span class="pun" style="color:#66660;">);</span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">endArray</span><span class="pun" style="color:#66660;">();</span><span class="pln">  </span></div><div><span class="pln">              </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">key</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"name"</span><span class="pun" style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">value</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"yuanzhifei89"</span><span class="pun" style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">key</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"age"</span><span class="pun" style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">value</span><span class="pun" style="color:#66660;">(</span><span class="lit" style="color:#06666;">100</span><span class="pun" style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">              </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">key</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"address"</span><span class="pun" style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">            </span><span class="com" style="color:#8800;">/* 键address的值是对象  */</span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="kwd" style="color:#0088;">object</span><span class="pun" style="color:#66660;">();</span><span class="pln">  </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">key</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"country"</span><span class="pun" style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">value</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"china"</span><span class="pun" style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">key</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"province"</span><span class="pun" style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">value</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"jiangsu"</span><span class="pun" style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">endObject</span><span class="pun" style="color:#66660;">();</span><span class="pln">  </span></div><div><span class="pln">              </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">key</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"married"</span><span class="pun" style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">value</span><span class="pun" style="color:#66660;">(</span><span class="kwd" style="color:#0088;">false</span><span class="pun" style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">              </span></div><div><span class="pln">            </span><span class="com" style="color:#8800;">/* },对象结束  */</span></div><div><span class="pln">            jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">endObject</span><span class="pun" style="color:#66660;">();</span><span class="pln">  </span></div><div><span class="pln">            </span><span class="typ" style="color:#66066;">Log</span><span class="pun" style="color:#66660;">.</span><span class="pln">i</span><span class="pun" style="color:#66660;">(</span><span class="pln">tag</span><span class="pun" style="color:#66660;">,</span><span class="pln">jsonText</span><span class="pun" style="color:#66660;">.</span><span class="pln">toString</span><span class="pun" style="color:#66660;">());</span></div><div><span class="pln">        </span><span class="pun" style="color:#66660;">}</span><span class="pln"> </span><span class="kwd" style="color:#0088;">catch</span><span class="pln"> </span><span class="pun" style="color:#66660;">(</span><span class="typ" style="color:#66066;">JSONException</span><span class="pln"> ex</span><span class="pun" style="color:#66660;">)</span><span class="pln"> </span><span class="pun" style="color:#66660;">{</span><span class="pln">  </span></div><div><span class="pln">            </span><span class="kwd" style="color:#0088;">throw</span><span class="pln"> </span><span class="kwd" style="color:#0088;">new</span><span class="pln"> </span><span class="typ" style="color:#66066;">RuntimeException</span><span class="pun" style="color:#66660;">(</span><span class="pln">ex</span><span class="pun" style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">        </span><span class="pun" style="color:#66660;">}</span><span class="pln">  </span></div><div><span class="pln">    </span><span class="pun" style="color:#66660;">}</span></div>
运行结果
03-28 21:41:50.221: I/robin(10153):  {"phone":["12345678","87654321","02887188812"],"name":"yuanzhifei89","age":100,"address":{"country":"china","province":"jiangsu"},"married":false}
六、通过JSONObject与JSONArray来解析json
我们可以通过JSONObject与 JSONArray 的getInt,getString,getDouble,getJSONArray,getJSONObject等函数来解析json.
以下是一个通过网络取得json文本,然后解析的示例。
示例3
<div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#66066;">AppGuessResponse</span><span class="pln"> getAppListFromHttp</span><span style="color:#66660;">(</span><span style="color:#66066;">Context</span><span class="pln"> mContext</span><span style="color:#66660;">)</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#66066;">String</span><span class="pln"> url </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0880;">"http://10.158.166.110:8080/AndroidServer/JsonServlet"</span><span style="color:#66660;">;</span></div><div><span class="pln">        </span><span style="color:#66066;">AppGuessResponse</span><span class="pln"> res </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">new</span><span class="pln"> </span><span style="color:#66066;">AppGuessResponse</span><span style="color:#66660;">();</span></div><div><span class="pln">        </span><span style="color:#0088;">try</span></div><div><span class="pln">        </span><span style="color:#66660;">{</span></div><div><span class="pln">            </span><span style="color:#66066;">HttpReturn</span><span class="pln"> ret </span><span style="color:#66660;">=</span><span class="pln"> getDataFromHttp</span><span style="color:#66660;">(</span><span class="pln">url</span><span style="color:#66660;">);</span></div><div><span class="pln">            </span><span style="color:#0088;">if</span><span class="pln"> </span><span style="color:#66660;">(</span><span class="pln">ret</span><span style="color:#66660;">.</span><span class="pln">getCode</span><span style="color:#66660;">()</span><span class="pln"> </span><span style="color:#66660;">==</span><span class="pln"> </span><span style="color:#66066;">HttpStatus</span><span style="color:#66660;">.</span><span class="pln">SC_OK</span><span style="color:#66660;">)</span></div><div><span class="pln">            </span><span style="color:#66660;">{</span></div><div><span class="pln">                res</span><span style="color:#66660;">.</span><span class="pln">parseFrom</span><span style="color:#66660;">(</span><span class="pln">ret</span><span style="color:#66660;">.</span><span class="pln">getBody</span><span style="color:#66660;">());</span></div><div><span class="pln">            </span><span style="color:#66660;">}</span></div><div><span class="pln">        </span><span style="color:#66660;">}</span><span class="pln"> </span><span style="color:#0088;">catch</span><span class="pln"> </span><span style="color:#66660;">(</span><span style="color:#66066;">Exception</span><span class="pln"> e</span><span style="color:#66660;">)</span></div><div><span class="pln">        </span><span style="color:#66660;">{</span></div><div><span class="pln">            </span><span style="color:#66066;">Log</span><span style="color:#66660;">.</span><span class="pln">e</span><span style="color:#66660;">(</span><span class="pln">tag</span><span style="color:#66660;">,</span><span class="pln"> </span><span style="color:#0880;">""</span><span style="color:#66660;">,</span><span class="pln"> e</span><span style="color:#66660;">);</span></div><div><span class="pln">        </span><span style="color:#66660;">}</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> res</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#66066;">HttpReturn</span><span class="pln"> getDataFromHttp</span><span style="color:#66660;">(</span><span style="color:#66066;">String</span><span class="pln"> url</span><span style="color:#66660;">)</span>
<span class="pln">    </span><span style="color:#66660;">{</span>
<span class="pln">        </span><span style="color:#8800;">/* HttpGet对象*/</span>
<span class="pln">        </span><span style="color:#66066;">HttpGet</span><span class="pln"> httpRequest </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">new</span><span class="pln"> </span><span style="color:#66066;">HttpGet</span><span style="color:#66660;">(</span><span class="pln">url</span><span style="color:#66660;">);</span>
<span class="pln">        </span><span style="color:#0088;">int</span><span class="pln"> code </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#66660;">-</span><span style="color:#06666;">1</span><span style="color:#66660;">;</span>
<span class="pln">        </span><span style="color:#0088;">try</span>
<span class="pln">        </span><span style="color:#66660;">{</span>
<span class="pln">            </span><span style="color:#8800;">/* HttpClient对象*/</span>
<span class="pln">            </span><span style="color:#66066;">HttpClient</span><span class="pln"> httpClient </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">new</span><span class="pln"> </span><span style="color:#66066;">DefaultHttpClient</span><span style="color:#66660;">();</span>
<span class="pln">            </span><span style="color:#8800;">/* 获得HttpResponse对象*/</span>
<span class="pln">            </span><span style="color:#66066;">HttpResponse</span><span class="pln"> httpResponse </span><span style="color:#66660;">=</span><span class="pln"> httpClient</span><span style="color:#66660;">.</span><span class="pln">execute</span><span style="color:#66660;">(</span><span class="pln">httpRequest</span><span style="color:#66660;">);</span>
<span class="pln">            code </span><span style="color:#66660;">=</span><span class="pln"> httpResponse</span><span style="color:#66660;">.</span><span class="pln">getStatusLine</span><span style="color:#66660;">().</span><span class="pln">getStatusCode</span><span style="color:#66660;">();</span>
<span class="pln">            </span><span style="color:#0088;">if</span><span class="pln"> </span><span style="color:#66660;">(</span><span class="pln">code </span><span style="color:#66660;">==</span><span class="pln"> </span><span style="color:#66066;">HttpStatus</span><span style="color:#66660;">.</span><span class="pln">SC_OK</span><span style="color:#66660;">)</span>
<span class="pln">            </span><span style="color:#66660;">{</span>
<span class="pln">                </span><span style="color:#8800;">// 取得返回的数据</span>
<span class="pln">                </span><span style="color:#0088;">byte</span><span class="pln"> bytes</span><span style="color:#66660;">[]</span><span class="pln"> </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#66066;">EntityUtils</span>
<span class="pln">                        </span><span style="color:#66660;">.</span><span class="pln">toByteArray</span><span style="color:#66660;">(</span><span class="pln">httpResponse</span><span style="color:#66660;">.</span><span class="pln">getEntity</span><span style="color:#66660;">());</span>
<span class="pln">                </span><span style="color:#0088;">return</span><span class="pln"> </span><span style="color:#0088;">new</span><span class="pln"> </span><span style="color:#66066;">BaseHttpReturn</span><span style="color:#66660;">(</span><span class="pln">code</span><span style="color:#66660;">,</span><span class="pln"> bytes</span><span style="color:#66660;">);</span>
<span class="pln">            </span><span style="color:#66660;">}</span><span class="pln"> </span><span style="color:#0088;">else</span>
<span class="pln">            </span><span style="color:#66660;">{</span>
<span class="pln">                </span><span style="color:#0088;">return</span><span class="pln"> </span><span style="color:#0088;">new</span><span class="pln"> </span><span style="color:#66066;">BaseHttpReturn</span><span style="color:#66660;">(</span><span class="pln">code</span><span style="color:#66660;">);</span>
<span class="pln">            </span><span style="color:#66660;">}</span>
<span class="pln">        </span><span style="color:#66660;">}</span><span class="pln"> </span><span style="color:#0088;">catch</span><span class="pln"> </span><span style="color:#66660;">(</span><span style="color:#66066;">ClientProtocolException</span><span class="pln"> e</span><span style="color:#66660;">)</span>
<span class="pln">        </span><span style="color:#66660;">{</span>
<span class="pln">            e</span><span style="color:#66660;">.</span><span class="pln">printStackTrace</span><span style="color:#66660;">();</span>
<span class="pln">        </span><span style="color:#66660;">}</span><span class="pln"> </span><span style="color:#0088;">catch</span><span class="pln"> </span><span style="color:#66660;">(</span><span style="color:#66066;">IOException</span><span class="pln"> e</span><span style="color:#66660;">)</span>
<span class="pln">        </span><span style="color:#66660;">{</span>
<span class="pln">            e</span><span style="color:#66660;">.</span><span class="pln">printStackTrace</span><span style="color:#66660;">();</span>
<span class="pln">        </span><span style="color:#66660;">}</span>
<span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> </span><span style="color:#0088;">new</span><span class="pln"> </span><span style="color:#66066;">BaseHttpReturn</span><span style="color:#66660;">(</span><span class="pln">code</span><span style="color:#66660;">);</span>
<span class="pln">    </span><span style="color:#66660;">}</span></div>
<div><span style="color:#0088;">interface</span><span class="pln"> </span><span style="color:#66066;">HttpReturn</span></div><div><span style="color:#66660;">{</span></div><div><span class="pln">    </span><span style="color:#0088;">int</span><span class="pln"> getCode</span><span style="color:#66660;">();</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">byte</span><span style="color:#66660;">[]</span><span class="pln"> getBody</span><span style="color:#66660;">();</span></div><div><span style="color:#66660;">}</span></div>
<div>
</div><div><span style="color:#0088;">class</span><span class="pln"> </span><span style="color:#66066;">BaseHttpReturn</span><span class="pln"> </span><span style="color:#0088;">implements</span><span class="pln"> </span><span style="color:#66066;">HttpReturn</span></div><div><span style="color:#66660;">{</span></div><div><span class="pln">    </span><span style="color:#0088;">final</span><span class="pln"> </span><span style="color:#0088;">int</span><span class="pln"> code</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#0088;">final</span><span class="pln"> </span><span style="color:#0088;">byte</span><span class="pln"> body</span><span style="color:#66660;">[];</span></div><div>
</div><div><span class="pln">    </span><span style="color:#66066;">BaseHttpReturn</span><span style="color:#66660;">(</span><span style="color:#0088;">int</span><span class="pln"> code</span><span style="color:#66660;">)</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">this</span><span style="color:#66660;">.</span><span class="pln">code </span><span style="color:#66660;">=</span><span class="pln"> code</span><span style="color:#66660;">;</span></div><div><span class="pln">        </span><span style="color:#0088;">this</span><span style="color:#66660;">.</span><span class="pln">body </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">null</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#66066;">BaseHttpReturn</span><span style="color:#66660;">(</span><span style="color:#0088;">int</span><span class="pln"> code</span><span style="color:#66660;">,</span><span class="pln"> </span><span style="color:#0088;">byte</span><span class="pln"> bytes</span><span style="color:#66660;">[])</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">this</span><span style="color:#66660;">.</span><span class="pln">code </span><span style="color:#66660;">=</span><span class="pln"> code</span><span style="color:#66660;">;</span></div><div><span class="pln">        </span><span style="color:#0088;">this</span><span style="color:#66660;">.</span><span class="pln">body </span><span style="color:#66660;">=</span><span class="pln"> bytes</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#06666;">@Override</span></div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">int</span><span class="pln"> getCode</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#8800;">// TODO Auto-generated method stub</span></div><div><span style="color:#8800;">        return 0;</span></div><div><span style="color:#8800;">    }</span></div><div>
</div><div><span class="pln">    </span><span style="color:#06666;">@Override</span></div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">byte</span><span style="color:#66660;">[]</span><span class="pln"> getBody</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#8800;">// TODO Auto-generated method stub</span></div><div><span style="color:#8800;">        return null;</span></div><div><span style="color:#8800;">    }</span></div><div>
</div><div><span style="color:#66660;">}</span></div>
<div><span style="color:#0088;">interface</span><span class="pln"> </span><span style="color:#66066;">ResponseParse</span></div><div><span style="color:#66660;">{</span></div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">void</span><span class="pln"> parseFrom</span><span style="color:#66660;">(</span><span style="color:#0088;">byte</span><span style="color:#66660;">[]</span><span class="pln"> bytes</span><span style="color:#66660;">);</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">void</span><span class="pln"> parseFrom</span><span style="color:#66660;">(</span><span style="color:#66066;">String</span><span class="pln"> str</span><span style="color:#66660;">);</span></div><div><span style="color:#66660;">}</span></div>

<div><span style="color:#0088;">class</span><span class="pln"> </span><span style="color:#66066;">Application</span></div><div><span style="color:#66660;">{</span></div><div><span class="pln">    </span><span style="color:#66066;">String</span><span class="pln"> name</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66066;">String</span><span class="pln"> packageName</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66066;">String</span><span class="pln"> version</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#0088;">int</span><span class="pln"> versionCode</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#0088;">double</span><span class="pln"> price</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#0088;">long</span><span class="pln"> size</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#0088;">long</span><span class="pln"> downloadCount</span><span style="color:#66660;">;</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">long</span><span class="pln"> getDownloadCount</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> downloadCount</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">void</span><span class="pln"> setDownloadCount</span><span style="color:#66660;">(</span><span style="color:#0088;">long</span><span class="pln"> downloadCount</span><span style="color:#66660;">)</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">this</span><span style="color:#66660;">.</span><span class="pln">downloadCount </span><span style="color:#66660;">=</span><span class="pln"> downloadCount</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">long</span><span class="pln"> getSize</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> size</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">void</span><span class="pln"> setSize</span><span style="color:#66660;">(</span><span style="color:#0088;">long</span><span class="pln"> size</span><span style="color:#66660;">)</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">this</span><span style="color:#66660;">.</span><span class="pln">size </span><span style="color:#66660;">=</span><span class="pln"> size</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#66066;">String</span><span class="pln"> getName</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> name</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">void</span><span class="pln"> setName</span><span style="color:#66660;">(</span><span style="color:#66066;">String</span><span class="pln"> name</span><span style="color:#66660;">)</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">this</span><span style="color:#66660;">.</span><span class="pln">name </span><span style="color:#66660;">=</span><span class="pln"> name</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#66066;">String</span><span class="pln"> getPackageName</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> packageName</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">void</span><span class="pln"> setPackageName</span><span style="color:#66660;">(</span><span style="color:#66066;">String</span><span class="pln"> packageName</span><span style="color:#66660;">)</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">this</span><span style="color:#66660;">.</span><span class="pln">packageName </span><span style="color:#66660;">=</span><span class="pln"> packageName</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#66066;">String</span><span class="pln"> getVersion</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> version</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">void</span><span class="pln"> setVersion</span><span style="color:#66660;">(</span><span style="color:#66066;">String</span><span class="pln"> version</span><span style="color:#66660;">)</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">this</span><span style="color:#66660;">.</span><span class="pln">version </span><span style="color:#66660;">=</span><span class="pln"> version</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">int</span><span class="pln"> getVersionCode</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> versionCode</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">void</span><span class="pln"> setVersionCode</span><span style="color:#66660;">(</span><span style="color:#0088;">int</span><span class="pln"> versionCode</span><span style="color:#66660;">)</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">this</span><span style="color:#66660;">.</span><span class="pln">versionCode </span><span style="color:#66660;">=</span><span class="pln"> versionCode</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">double</span><span class="pln"> getPrice</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> price</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">void</span><span class="pln"> setPrice</span><span style="color:#66660;">(</span><span style="color:#0088;">double</span><span class="pln"> price</span><span style="color:#66660;">)</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">this</span><span style="color:#66660;">.</span><span class="pln">price </span><span style="color:#66660;">=</span><span class="pln"> price</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div><span style="color:#66660;">}</span></div>
<div><span style="color:#0088;">class</span><span class="pln"> </span><span style="color:#66066;">AppGuessResponse</span><span class="pln"> </span><span style="color:#0088;">implements</span><span class="pln"> </span><span style="color:#66066;">ResponseParse</span></div><div><span style="color:#66660;">{</span></div><div><span class="pln">    </span><span style="color:#0088;">private</span><span class="pln"> </span><span style="color:#66066;">List</span><span style="color:#66660;"><</span><span style="color:#66066;">Application</span><span style="color:#66660;">></span><span class="pln"> mApplications </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">new</span><span class="pln"> </span><span style="color:#66066;">ArrayList</span><span style="color:#66660;"><</span><span style="color:#66066;">Application</span><span style="color:#66660;">>();</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">private</span><span class="pln"> </span><span style="color:#0088;">boolean</span><span class="pln"> mIsFinish </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">false</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#0088;">private</span><span class="pln"> </span><span style="color:#0088;">boolean</span><span class="pln"> mIsSuccess </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">false</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#0088;">private</span><span class="pln"> </span><span style="color:#0088;">int</span><span class="pln"> allCount </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#06666;">0</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#0088;">private</span><span class="pln"> </span><span style="color:#66066;">Date</span><span class="pln"> expireDate </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">new</span><span class="pln"> </span><span style="color:#66066;">Date</span><span style="color:#66660;">(</span><span style="color:#66066;">System</span><span style="color:#66660;">.</span><span class="pln">currentTimeMillis</span><span style="color:#66660;">()</span><span class="pln"> </span><span style="color:#66660;">+</span><span class="pln"> </span><span style="color:#06666;">24</span><span class="pln"> </span><span style="color:#66660;">*</span><span class="pln"> </span><span style="color:#06666;">60</span></div><div><span class="pln">            </span><span style="color:#66660;">*</span><span class="pln"> </span><span style="color:#06666;">60</span><span class="pln"> </span><span style="color:#66660;">*</span><span class="pln"> </span><span style="color:#06666;">1000</span><span style="color:#66660;">);</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#66066;">Date</span><span class="pln"> getExpireDate</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> expireDate</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">void</span><span class="pln"> setExpireDate</span><span style="color:#66660;">(</span><span style="color:#66066;">Date</span><span class="pln"> expireDate</span><span style="color:#66660;">)</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">this</span><span style="color:#66660;">.</span><span class="pln">expireDate </span><span style="color:#66660;">=</span><span class="pln"> expireDate</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">int</span><span class="pln"> getAllCount</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> allCount</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">void</span><span class="pln"> setAllCount</span><span style="color:#66660;">(</span><span style="color:#0088;">int</span><span class="pln"> allCount</span><span style="color:#66660;">)</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">this</span><span style="color:#66660;">.</span><span class="pln">allCount </span><span style="color:#66660;">=</span><span class="pln"> allCount</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">boolean</span><span class="pln"> getIsSuccess</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> mIsSuccess</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#66066;">Application</span><span class="pln"> getApplicationItem</span><span style="color:#66660;">(</span><span style="color:#0088;">int</span><span class="pln"> i</span><span style="color:#66660;">)</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> mApplications</span><span style="color:#66660;">.</span><span style="color:#0088;">get</span><span style="color:#66660;">(</span><span class="pln">i</span><span style="color:#66660;">);</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">int</span><span class="pln"> getApplicationItemCount</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> mApplications</span><span style="color:#66660;">.</span><span class="pln">size</span><span style="color:#66660;">();</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#66066;">List</span><span style="color:#66660;"><</span><span style="color:#66066;">Application</span><span style="color:#66660;">></span><span class="pln"> getApplicationItemList</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> mApplications</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">boolean</span><span class="pln"> isFinish</span><span style="color:#66660;">()</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">return</span><span class="pln"> mIsFinish</span><span style="color:#66660;">;</span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#06666;">@Override</span></div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">void</span><span class="pln"> parseFrom</span><span style="color:#66660;">(</span><span style="color:#0088;">byte</span><span style="color:#66660;">[]</span><span class="pln"> bytes</span><span style="color:#66660;">)</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#8800;">// TODO Auto-generated method stub</span></div><div>
</div><div><span class="pln">    </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#06666;">@Override</span></div><div><span class="pln">    </span><span style="color:#0088;">public</span><span class="pln"> </span><span style="color:#0088;">void</span><span class="pln"> parseFrom</span><span style="color:#66660;">(</span><span style="color:#66066;">String</span><span class="pln"> strJson</span><span style="color:#66660;">)</span></div><div><span class="pln">    </span><span style="color:#66660;">{</span></div><div><span class="pln">        </span><span style="color:#0088;">try</span></div><div><span class="pln">        </span><span style="color:#66660;">{</span></div><div><span class="pln">            </span><span style="color:#66066;">JSONObject</span><span class="pln"> jsonObject </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">new</span><span class="pln"> </span><span style="color:#66066;">JSONObject</span><span style="color:#66660;">(</span><span class="pln">strJson</span><span style="color:#66660;">);</span></div><div><span class="pln">            </span><span style="color:#0088;">if</span><span class="pln"> </span><span style="color:#66660;">(</span><span class="pln">jsonObject</span><span style="color:#66660;">.</span><span class="pln">has</span><span style="color:#66660;">(</span><span style="color:#0880;">"endpage"</span><span style="color:#66660;">))</span></div><div><span class="pln">            </span><span style="color:#66660;">{</span></div><div><span class="pln">                mIsFinish </span><span style="color:#66660;">=</span><span class="pln"> jsonObject</span><span style="color:#66660;">.</span><span class="pln">getInt</span><span style="color:#66660;">(</span><span style="color:#0880;">"endpage"</span><span style="color:#66660;">)</span><span class="pln"> </span><span style="color:#66660;">==</span><span class="pln"> </span><span style="color:#06666;">0</span><span class="pln"> </span><span style="color:#66660;">?</span><span class="pln"> </span><span style="color:#0088;">true</span><span class="pln"> </span><span style="color:#66660;">:</span><span class="pln"> </span><span style="color:#0088;">false</span><span style="color:#66660;">;</span></div><div><span class="pln">            </span><span style="color:#66660;">}</span><span class="pln"> </span><span style="color:#0088;">else</span></div><div><span class="pln">            </span><span style="color:#66660;">{</span></div><div><span class="pln">                mIsFinish </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">false</span><span style="color:#66660;">;</span></div><div><span class="pln">            </span><span style="color:#66660;">}</span></div><div><span class="pln">            </span><span style="color:#0088;">if</span><span class="pln"> </span><span style="color:#66660;">(</span><span class="pln">jsonObject</span><span style="color:#66660;">.</span><span class="pln">has</span><span style="color:#66660;">(</span><span style="color:#0880;">"allcount"</span><span style="color:#66660;">))</span></div><div><span class="pln">            </span><span style="color:#66660;">{</span></div><div><span class="pln">                allCount </span><span style="color:#66660;">=</span><span class="pln"> jsonObject</span><span style="color:#66660;">.</span><span class="pln">getInt</span><span style="color:#66660;">(</span><span style="color:#0880;">"allcount"</span><span style="color:#66660;">);</span></div><div><span class="pln">            </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">            </span><span style="color:#0088;">if</span><span class="pln"> </span><span style="color:#66660;">(</span><span class="pln">jsonObject</span><span style="color:#66660;">.</span><span class="pln">has</span><span style="color:#66660;">(</span><span style="color:#0880;">"list"</span><span style="color:#66660;">))</span></div><div><span class="pln">            </span><span style="color:#66660;">{</span></div><div><span class="pln">                </span><span style="color:#66066;">JSONArray</span><span class="pln"> jsonArray </span><span style="color:#66660;">=</span><span class="pln"> jsonObject</span><span style="color:#66660;">.</span><span class="pln">getJSONArray</span><span style="color:#66660;">(</span><span style="color:#0880;">"list"</span><span style="color:#66660;">);</span></div><div><span class="pln">                </span><span style="color:#0088;">if</span><span class="pln"> </span><span style="color:#66660;">(</span><span class="pln">jsonArray</span><span style="color:#66660;">.</span><span class="pln">length</span><span style="color:#66660;">()</span><span class="pln"> </span><span style="color:#66660;">!=</span><span class="pln"> </span><span style="color:#06666;">0</span><span style="color:#66660;">)</span></div><div><span class="pln">                </span><span style="color:#66660;">{</span></div><div><span class="pln">                    </span><span style="color:#0088;">for</span><span class="pln"> </span><span style="color:#66660;">(</span><span style="color:#0088;">int</span><span class="pln"> i </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#06666;">0</span><span style="color:#66660;">;</span><span class="pln"> i </span><span style="color:#66660;"><</span><span class="pln"> jsonArray</span><span style="color:#66660;">.</span><span class="pln">length</span><span style="color:#66660;">();</span><span class="pln"> i</span><span style="color:#66660;">++)</span></div><div><span class="pln">                    </span><span style="color:#66660;">{</span></div><div><span class="pln">                        </span><span style="color:#66066;">JSONObject</span><span class="pln"> jsonObject2 </span><span style="color:#66660;">=</span><span class="pln"> jsonArray</span><span style="color:#66660;">.</span><span class="pln">getJSONObject</span><span style="color:#66660;">(</span><span class="pln">i</span><span style="color:#66660;">);</span></div><div><span class="pln">                        </span><span style="color:#66066;">Application</span><span class="pln"> app </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">new</span><span class="pln"> </span><span style="color:#66066;">Application</span><span style="color:#66660;">();</span></div><div><span class="pln">                        app</span><span style="color:#66660;">.</span><span class="pln">setName</span><span style="color:#66660;">(</span><span class="pln">jsonObject2</span><span style="color:#66660;">.</span><span class="pln">getString</span><span style="color:#66660;">(</span><span style="color:#0880;">"name"</span><span style="color:#66660;">));</span></div><div><span class="pln">                        app</span><span style="color:#66660;">.</span><span class="pln">setPackageName</span><span style="color:#66660;">(</span><span class="pln">jsonObject2</span><span style="color:#66660;">.</span><span class="pln">getString</span><span style="color:#66660;">(</span><span style="color:#0880;">"packageName"</span><span style="color:#66660;">));</span></div><div><span class="pln">                        app</span><span style="color:#66660;">.</span><span class="pln">setSize</span><span style="color:#66660;">(</span><span class="pln">jsonObject2</span><span style="color:#66660;">.</span><span class="pln">getLong</span><span style="color:#66660;">(</span><span style="color:#0880;">"size"</span><span style="color:#66660;">));</span></div><div><span class="pln">                        app</span><span style="color:#66660;">.</span><span class="pln">setPrice</span><span style="color:#66660;">(</span><span class="pln">jsonObject2</span><span style="color:#66660;">.</span><span class="pln">optDouble</span><span style="color:#66660;">(</span><span style="color:#0880;">"price"</span><span style="color:#66660;">,</span><span class="pln"> </span><span style="color:#06666;">0.0</span><span style="color:#66660;">));</span></div><div><span class="pln">                        app</span><span style="color:#66660;">.</span><span class="pln">setVersion</span><span style="color:#66660;">(</span><span class="pln">jsonObject2</span><span style="color:#66660;">.</span><span class="pln">getString</span><span style="color:#66660;">(</span><span style="color:#0880;">"version"</span><span style="color:#66660;">));</span></div><div><span class="pln">                        app</span><span style="color:#66660;">.</span><span class="pln">setVersionCode</span><span style="color:#66660;">(</span><span class="pln">jsonObject2</span><span style="color:#66660;">.</span><span class="pln">getInt</span><span style="color:#66660;">(</span><span style="color:#0880;">"versioncode"</span><span style="color:#66660;">));</span></div><div><span class="pln">                        </span><span style="color:#0088;">if</span><span class="pln"> </span><span style="color:#66660;">(</span><span class="pln">jsonObject2</span><span style="color:#66660;">.</span><span class="pln">has</span><span style="color:#66660;">(</span><span style="color:#0880;">"downloadCount"</span><span style="color:#66660;">))</span></div><div><span class="pln">                        </span><span style="color:#66660;">{</span></div><div><span class="pln">                            app</span><span style="color:#66660;">.</span><span class="pln">setDownloadCount</span><span style="color:#66660;">(</span><span class="pln">jsonObject2</span><span style="color:#66660;">.</span><span class="pln">optLong</span><span style="color:#66660;">(</span></div><div><span class="pln">                                    </span><span style="color:#0880;">"downloadCount"</span><span style="color:#66660;">,</span><span class="pln"> </span><span style="color:#06666;">0</span><span style="color:#66660;">));</span></div><div><span class="pln">                        </span><span style="color:#66660;">}</span></div><div><span class="pln">                        mApplications</span><span style="color:#66660;">.</span><span class="pln">add</span><span style="color:#66660;">(</span><span class="pln">app</span><span style="color:#66660;">);</span></div><div><span class="pln">                    </span><span style="color:#66660;">}</span></div><div><span class="pln">                </span><span style="color:#66660;">}</span></div><div><span class="pln">            </span><span style="color:#66660;">}</span></div><div><span class="pln">            mIsSuccess </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">true</span><span style="color:#66660;">;</span></div><div><span class="pln">        </span><span style="color:#66660;">}</span><span class="pln"> </span><span style="color:#0088;">catch</span><span class="pln"> </span><span style="color:#66660;">(</span><span style="color:#66066;">JSONException</span><span class="pln"> e</span><span style="color:#66660;">)</span></div><div><span class="pln">        </span><span style="color:#66660;">{</span></div><div><span class="pln">            mIsSuccess </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">false</span><span style="color:#66660;">;</span></div><div><span class="pln">        </span><span style="color:#66660;">}</span></div><div>
</div><div><span class="pln">    </span><span style="color:#66660;">}</span></div>
七、通过JSONTokener来解析json文本
7.1、将json文本解析为对象
我们可以通过 JSONTokener的nextValue()来获得JSONObject对象,然后再通过JSONObject对象来做进一步的解析。
实例4
<div><span class="pln"> </span><span style="color:#0088;">void</span><span class="pln"> startJSONTokenerDemo</span><span style="color:#66660;">(){</span></div><div><span class="pln">        </span><span style="color:#0088;">final</span><span class="pln"> </span><span style="color:#66066;">String</span><span class="pln"> JSON </span><span style="color:#66660;">=</span><span class="pln">   </span></div><div><span class="pln">                </span><span style="color:#0880;">"{"</span><span class="pln"> </span><span style="color:#66660;">+</span><span class="pln">  </span></div><div><span class="pln">                    </span><span style="color:#0880;">"   \"phone\" : [\"12345678\", \"87654321\"],"</span><span class="pln"> </span><span style="color:#66660;">+</span><span class="pln">  </span></div><div><span class="pln">                    </span><span style="color:#0880;">"   \"name\" : \"yuanzhifei89\","</span><span class="pln"> </span><span style="color:#66660;">+</span><span class="pln">  </span></div><div><span class="pln">                    </span><span style="color:#0880;">"   \"age\" : 100,"</span><span class="pln"> </span><span style="color:#66660;">+</span><span class="pln">  </span></div><div><span class="pln">                    </span><span style="color:#0880;">"   \"address\" : { \"country\" : \"china\", \"province\" : \"jiangsu\" },"</span><span class="pln"> </span><span style="color:#66660;">+</span><span class="pln">  </span></div><div><span class="pln">                    </span><span style="color:#0880;">"   \"married\" : false,"</span><span class="pln"> </span><span style="color:#66660;">+</span><span class="pln">  </span></div><div><span class="pln">                </span><span style="color:#0880;">"}"</span><span style="color:#66660;">;</span><span class="pln">  </span></div><div><span class="pln">                  </span></div><div><span class="pln">                </span><span style="color:#0088;">try</span><span class="pln"> </span><span style="color:#66660;">{</span><span class="pln">  </span></div><div><span class="pln">                    </span><span style="color:#66066;">JSONTokener</span><span class="pln"> jsonTokener </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">new</span><span class="pln"> </span><span style="color:#66066;">JSONTokener</span><span style="color:#66660;">(</span><span class="pln">JSON</span><span style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">                    </span><span style="color:#8800;">/* 此时还未读取任何json文本,直接读取就是一个JSONObject对象。  </span></div><div><span style="color:#8800;">                                                     如果此时的读取位置在"name" : 了,那么nextValue就是"yuanzhifei89"(String)  </span></div><div><span style="color:#8800;">                    */</span></div><div><span class="pln">                    </span><span style="color:#66066;">JSONObject</span><span class="pln"> person </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#66660;">(</span><span style="color:#66066;">JSONObject</span><span style="color:#66660;">)</span><span class="pln"> jsonTokener</span><span style="color:#66660;">.</span><span class="pln">nextValue</span><span style="color:#66660;">();</span><span class="pln">  </span></div><div><span class="pln">                    </span><span style="color:#8800;">/* 接下来的就是JSON对象的操作了 */</span><span class="pln"> </span></div><div><span class="pln">                    person</span><span style="color:#66660;">.</span><span class="pln">getJSONArray</span><span style="color:#66660;">(</span><span style="color:#0880;">"phone"</span><span style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">                    person</span><span style="color:#66660;">.</span><span class="pln">getString</span><span style="color:#66660;">(</span><span style="color:#0880;">"name"</span><span style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">                    person</span><span style="color:#66660;">.</span><span class="pln">getInt</span><span style="color:#66660;">(</span><span style="color:#0880;">"age"</span><span style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">                    person</span><span style="color:#66660;">.</span><span class="pln">getJSONObject</span><span style="color:#66660;">(</span><span style="color:#0880;">"address"</span><span style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">                    person</span><span style="color:#66660;">.</span><span class="pln">getBoolean</span><span style="color:#66660;">(</span><span style="color:#0880;">"married"</span><span style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">                </span><span style="color:#66660;">}</span><span class="pln"> </span><span style="color:#0088;">catch</span><span class="pln"> </span><span style="color:#66660;">(</span><span style="color:#66066;">JSONException</span><span class="pln"> ex</span><span style="color:#66660;">)</span><span class="pln"> </span><span style="color:#66660;">{</span><span class="pln">  </span></div><div><span class="pln">                    </span><span style="color:#8800;">/*异常处理代码  */</span></div><div><span class="pln">                </span><span style="color:#66660;">}</span><span class="pln">    </span></div><div><span class="pln">    </span><span style="color:#66660;">}</span></div>
7.2、将json文本解析为文本
我们可以通过 JSONTokener的一些方法将json文本解析为文本
实例5
<div><span class="pln">  </span><span style="color:#0088;">void</span><span class="pln"> startJSONTokenerDemo2</span><span style="color:#66660;">(){</span></div><div><span class="pln">        </span><span style="color:#0088;">final</span><span class="pln"> </span><span style="color:#66066;">String</span><span class="pln"> JSON </span><span style="color:#66660;">=</span><span class="pln">   </span></div><div><span class="pln">                </span><span style="color:#0880;">"{"</span><span class="pln"> </span><span style="color:#66660;">+</span><span class="pln">  </span></div><div><span class="pln">                    </span><span style="color:#0880;">"   \"phone\" : [\"12345678\", \"87654321\"],"</span><span class="pln"> </span><span style="color:#66660;">+</span><span class="pln">  </span></div><div><span class="pln">                    </span><span style="color:#0880;">"   \"name\" : \"yuanzhifei89\","</span><span class="pln"> </span><span style="color:#66660;">+</span><span class="pln">  </span></div><div><span class="pln">                    </span><span style="color:#0880;">"   \"age\" : 100,"</span><span class="pln"> </span><span style="color:#66660;">+</span><span class="pln">  </span></div><div><span class="pln">                    </span><span style="color:#0880;">"   \"address\" : { \"country\" : \"china\", \"province\" : \"jiangsu\" },"</span><span class="pln"> </span><span style="color:#66660;">+</span><span class="pln">  </span></div><div><span class="pln">                    </span><span style="color:#0880;">"   \"married\" : false,"</span><span class="pln"> </span><span style="color:#66660;">+</span><span class="pln">  </span></div><div><span class="pln">                </span><span style="color:#0880;">"}"</span><span style="color:#66660;">;</span><span class="pln">  </span></div><div><span class="pln">                  </span></div><div><span class="pln">        </span><span style="color:#0088;">try</span><span class="pln"> </span><span style="color:#66660;">{</span><span class="pln">  </span></div><div><span class="pln">            </span><span style="color:#66066;">JSONTokener</span><span class="pln"> jsonTokener </span><span style="color:#66660;">=</span><span class="pln"> </span><span style="color:#0088;">new</span><span class="pln"> </span><span style="color:#66066;">JSONTokener</span><span style="color:#66660;">(</span><span class="pln">JSON</span><span style="color:#66660;">);</span><span class="pln">  </span></div><div><span class="pln">            </span><span style="color:#8800;">/* 继续向下读json文本中的8个字符。此时刚开始,即在{处  */</span></div><div><span class="pln">            </span><span style="color:#66066;">Log</span><span style="color:#66660;">.</span><span class="pln">i</span><span style="color:#66660;">(</span><span class="pln">tag</span><span style="color:#66660;">,</span><span style="color:#0880;">"jsonTokener.next(8)|"</span><span style="color:#66660;">+</span><span class="pln">jsonTokener</span><span style="color:#66660;">.</span><span style="color:#0088;">next</span><span style="color:#66660;">(</span><span style="color:#06666;">8</span><span style="color:#66660;">));</span></div><div><span class="pln">            </span><span style="color:#8800;">/* 继续向下读json文本中的1个字符  */</span></div><div><span class="pln">            </span><span style="color:#66066;">Log</span><span style="color:#66660;">.</span><span class="pln">i</span><span style="color:#66660;">(</span><span class="pln">tag</span><span style="color:#66660;">,</span><span style="color:#0880;">"jsonTokener.next()|"</span><span style="color:#66660;">+</span><span class="pln">jsonTokener</span><span style="color:#66660;">.</span><span style="color:#0088;">next</span><span style="color:#66660;">());</span></div><div><span class="pln">            </span><span style="color:#8800;">/* 继续向下读取一个json文本中的字符。该字符不是空白、同时也不是注释中的字符  */</span></div><div><span class="pln">            </span><span style="color:#66066;">Log</span><span style="color:#66660;">.</span><span class="pln">i</span><span style="color:#66660;">(</span><span class="pln">tag</span><span style="color:#66660;">,</span><span style="color:#0880;">"jjsonTokener.nextClean()|"</span><span style="color:#66660;">+</span><span class="pln">jsonTokener</span><span style="color:#66660;">.</span><span class="pln">nextClean</span><span style="color:#66660;">());</span><span class="pln"> </span></div><div><span class="pln">            </span><span style="color:#8800;">/* 返回当前的读取位置到第一次遇到'a'之间的字符串(不包括a)。  */</span></div><div><span class="pln">            </span><span style="color:#66066;">Log</span><span style="color:#66660;">.</span><span class="pln">i</span><span style="color:#66660;">(</span><span class="pln">tag</span><span style="color:#66660;">,</span><span style="color:#0880;">"jsonTokener.nextString('a')|"</span><span style="color:#66660;">+</span><span class="pln">jsonTokener</span><span style="color:#66660;">.</span><span class="pln">nextString</span><span style="color:#66660;">(</span><span style="color:#0880;">'a'</span><span style="color:#66660;">));</span></div><div><span class="pln">            </span><span style="color:#8800;">/* 返回当前读取位置到第一次遇到字符串中(如"0089")任意字符之间的字符串,同时该字符是trimmed的。(此处就是第一次遇到了89)*/</span><span class="pln">  </span></div><div><span class="pln">            </span><span style="color:#66066;">Log</span><span style="color:#66660;">.</span><span class="pln">i</span><span style="color:#66660;">(</span><span class="pln">tag</span><span style="color:#66660;">,</span><span style="color:#0880;">"jsonTokener.nextTo(\"0089\")|"</span><span style="color:#66660;">+</span><span class="pln">jsonTokener</span><span style="color:#66660;">.</span><span class="pln">nextTo</span><span style="color:#66660;">(</span><span style="color:#0880;">"0089"</span><span style="color:#66660;">)</span><span class="pln"> </span><span style="color:#66660;">);</span></div><div><span class="pln">            </span><span style="color:#8800;">/* 读取位置回退一个  */</span></div><div><span class="pln">            jsonTokener</span><span style="color:#66660;">.</span><span class="pln">back</span><span style="color:#66660;">();</span><span class="pln"> </span></div><div><span class="pln">            </span><span style="color:#66066;">Log</span><span style="color:#66660;">.</span><span class="pln">i</span><span style="color:#66660;">(</span><span class="pln">tag</span><span style="color:#66660;">,</span><span style="color:#0880;">"jsonTokener.back()"</span><span style="color:#66660;">);</span></div><div><span class="pln">            </span><span style="color:#66066;">Log</span><span style="color:#66660;">.</span><span class="pln">i</span><span style="color:#66660;">(</span><span class="pln">tag</span><span style="color:#66660;">,</span><span style="color:#0880;">"jsonTokener.next()|"</span><span style="color:#66660;">+</span><span class="pln">jsonTokener</span><span style="color:#66660;">.</span><span style="color:#0088;">next</span><span style="color:#66660;">());</span></div><div><span class="pln">            </span><span style="color:#8800;">/* 读取位置前进到指定字符串处(包括字符串)*/</span><span class="pln">  </span></div><div><span class="pln">            jsonTokener</span><span style="color:#66660;">.</span><span class="pln">skipPast</span><span style="color:#66660;">(</span><span style="color:#0880;">"address"</span><span style="color:#66660;">);</span><span class="pln"> </span></div><div><span class="pln">            </span><span style="color:#66066;">Log</span><span style="color:#66660;">.</span><span class="pln">i</span><span style="color:#66660;">(</span><span class="pln">tag</span><span style="color:#66660;">,</span><span style="color:#0880;">"skipPast(\"address\")"</span><span style="color:#66660;">);</span></div><div><span class="pln">            </span><span style="color:#66066;">Log</span><span style="color:#66660;">.</span><span class="pln">i</span><span style="color:#66660;">(</span><span class="pln">tag</span><span style="color:#66660;">,</span><span style="color:#0880;">"jsonTokener.next(8)|"</span><span style="color:#66660;">+</span><span class="pln">jsonTokener</span><span style="color:#66660;">.</span><span style="color:#0088;">next</span><span style="color:#66660;">(</span><span style="color:#06666;">8</span><span style="color:#66660;">));</span></div><div><span class="pln">            </span><span style="color:#8800;">/* 读取位置前进到执行字符处(不包括字符)  */</span></div><div><span class="pln">            </span><span style="color:#66066;">Log</span><span style="color:#66660;">.</span><span class="pln">i</span><span style="color:#66660;">(</span><span class="pln">tag</span><span style="color:#66660;">,</span><span style="color:#0880;">"jsonTokener.skipTo('m')|"</span><span style="color:#66660;">+</span><span class="pln">jsonTokener</span><span style="color:#66660;">.</span><span class="pln">skipTo</span><span style="color:#66660;">(</span><span style="color:#0880;">'m'</span><span style="color:#66660;">));</span></div><div><span class="pln">            jsonTokener</span><span style="color:#66660;">.</span><span style="color:#0088;">next</span><span style="color:#66660;">(</span><span style="color:#06666;">8</span><span style="color:#66660;">);</span><span class="pln"> </span></div><div><span class="pln">            </span><span style="color:#66066;">Log</span><span style="color:#66660;">.</span><span class="pln">i</span><span style="color:#66660;">(</span><span class="pln">tag</span><span style="color:#66660;">,</span><span style="color:#0880;">"jsonTokener.next(8)|"</span><span style="color:#66660;">+</span><span class="pln">jsonTokener</span><span style="color:#66660;">.</span><span style="color:#0088;">next</span><span style="color:#66660;">(</span><span style="color:#06666;">8</span><span style="color:#66660;">));</span><span class="pln">  </span></div><div><span class="pln">        </span><span style="color:#66660;">}</span><span class="pln"> </span><span style="color:#0088;">catch</span><span class="pln"> </span><span style="color:#66660;">(</span><span style="color:#66066;">JSONException</span><span class="pln"> ex</span><span style="color:#66660;">)</span><span class="pln"> </span><span style="color:#66660;">{</span><span class="pln">  </span></div><div><span class="pln">            </span><span style="color:#8800;">// 异常处理代码  </span></div><div><span style="color:#8800;">        }  </span></div><div><span style="color:#8800;">    }</span></div>
运行结果:
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
在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
<div><span class="pln">    </span><span class="kwd" style="color:#0088;">void</span><span class="pln"> startJsonReaderDemo</span><span class="pun" style="color:#66660;">(){</span></div><div><span class="pln">        </span><span class="kwd" style="color:#0088;">private</span><span class="pln"> </span><span class="typ" style="color:#66066;">String</span><span class="pln"> jsonData </span><span class="pun" style="color:#66660;">=</span><span class="pln"> </span><span class="str" style="color:#0880;">"[{\"name\":\"zhangsan\",\"age\":22},{\"name\":\"lisi\",\"age\":23}]"</span><span class="pun" style="color:#66660;">;</span><span class="pln">  </span></div><div><span class="pln">        </span><span class="typ" style="color:#66066;">JsonReader</span><span class="pln"> reader </span><span class="pun" style="color:#66660;">=</span><span class="pln"> </span><span class="kwd" style="color:#0088;">new</span><span class="pln"> </span><span class="typ" style="color:#66066;">JsonReader</span><span class="pun" style="color:#66660;">(</span><span class="kwd" style="color:#0088;">new</span><span class="pln"> </span><span class="typ" style="color:#66066;">StringReader</span><span class="pun" style="color:#66660;">(</span><span class="pln">jsonData</span><span class="pun" style="color:#66660;">));</span></div><div><span class="pln">        </span><span class="kwd" style="color:#0088;">try</span></div><div><span class="pln">        </span><span class="pun" style="color:#66660;">{</span></div><div><span class="pln">            reader</span><span class="pun" style="color:#66660;">.</span><span class="pln">beginArray</span><span class="pun" style="color:#66660;">();</span><span class="pln"> </span><span class="com" style="color:#8800;">/* 开始解析数组 */</span></div><div><span class="pln">            </span><span class="kwd" style="color:#0088;">while</span><span class="pln"> </span><span class="pun" style="color:#66660;">(</span><span class="pln">reader</span><span class="pun" style="color:#66660;">.</span><span class="pln">hasNext</span><span class="pun" style="color:#66660;">())</span></div><div><span class="pln">            </span><span class="pun" style="color:#66660;">{</span></div><div><span class="pln">                reader</span><span class="pun" style="color:#66660;">.</span><span class="pln">beginObject</span><span class="pun" style="color:#66660;">();</span><span class="pln"> </span><span class="com" style="color:#8800;">/* 开始解析对象 */</span></div><div><span class="pln">                </span><span class="kwd" style="color:#0088;">while</span><span class="pln"> </span><span class="pun" style="color:#66660;">(</span><span class="pln">reader</span><span class="pun" style="color:#66660;">.</span><span class="pln">hasNext</span><span class="pun" style="color:#66660;">())</span></div><div><span class="pln">                </span><span class="pun" style="color:#66660;">{</span></div><div><span class="pln">                    </span><span class="typ" style="color:#66066;">String</span><span class="pln"> tagName </span><span class="pun" style="color:#66660;">=</span><span class="pln"> reader</span><span class="pun" style="color:#66660;">.</span><span class="pln">nextName</span><span class="pun" style="color:#66660;">();</span><span class="pln"> </span><span class="com" style="color:#8800;">/* 得到键值对中的key */</span></div><div><span class="pln">                    </span><span class="com" style="color:#8800;">/* key为name时/*</span></div><div><span class="com" style="color:#8800;">                    if (tagName.equals("name"))</span></div><div><span class="com" style="color:#8800;">                    {</span></div><div><span class="com" style="color:#8800;">                        Log.i(tag, "name--------->" + reader.nextString()); /* 得到key中的内容 */</span></div><div><span class="pln">                    </span><span class="pun" style="color:#66660;">}</span><span class="pln"> </span><span class="kwd" style="color:#0088;">else</span><span class="pln"> </span><span class="kwd" style="color:#0088;">if</span><span class="pln"> </span><span class="pun" style="color:#66660;">(</span><span class="pln">tagName</span><span class="pun" style="color:#66660;">.</span><span class="pln">equals</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"age"</span><span class="pun" style="color:#66660;">))</span><span class="com" style="color:#8800;">/* key为age时*/</span></div><div><span class="pln">                    </span><span class="pun" style="color:#66660;">{</span><span class="pln"> </span></div><div><span class="pln">                        </span><span class="typ" style="color:#66066;">Log</span><span class="pun" style="color:#66660;">.</span><span class="pln">i</span><span class="pun" style="color:#66660;">(</span><span class="pln">tag</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="str" style="color:#0880;">"age--------->"</span><span class="pln"> </span><span class="pun" style="color:#66660;">+</span><span class="pln"> reader</span><span class="pun" style="color:#66660;">.</span><span class="pln">nextInt</span><span class="pun" style="color:#66660;">());</span><span class="pln"> </span><span class="com" style="color:#8800;">/* 得到key中的内容 */</span></div><div><span class="pln">                    </span><span class="pun" style="color:#66660;">}</span></div><div><span class="pln">                </span><span class="pun" style="color:#66660;">}</span></div><div><span class="pln">                reader</span><span class="pun" style="color:#66660;">.</span><span class="pln">endObject</span><span class="pun" style="color:#66660;">();</span></div><div><span class="pln">            </span><span class="pun" style="color:#66660;">}</span></div><div><span class="pln">            reader</span><span class="pun" style="color:#66660;">.</span><span class="pln">endArray</span><span class="pun" style="color:#66660;">();</span></div><div><span class="pln">        </span><span class="pun" style="color:#66660;">}</span><span class="pln"> </span><span class="kwd" style="color:#0088;">catch</span><span class="pln"> </span><span class="pun" style="color:#66660;">(</span><span class="typ" style="color:#66066;">IOException</span><span class="pln"> e</span><span class="pun" style="color:#66660;">)</span></div><div><span class="pln">        </span><span class="pun" style="color:#66660;">{</span></div><div><span class="pln">            e</span><span class="pun" style="color:#66660;">.</span><span class="pln">printStackTrace</span><span class="pun" style="color:#66660;">();</span></div><div><span class="pln">        </span><span class="pun" style="color:#66660;">}</span></div><div><span class="pln">    </span><span class="pun" style="color:#66660;">}</span></div>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值