Androidの解析Jsonデータ.
5370 ワード
JSON(JavaScript Object Notation)は、軽量級のデータ交換フォーマットです.それはJavaScript(Standard ECMA-232 rd Edition-December 1999)のサブセットに基づいています.
Androidでは、クライアントとネットワーク(またはサーバ)通信に広く使われている.
JSONは名称/値ペアを示す方式です.
一番簡単な形式で、以下のようなJSONで「名称/値ペア」を表してもいいです.
{「name」:「Brett」、「lage」:22、「sex」:「女」}はJsonObjectを表しています.
「{name:"张三:",age:21,sex:"女"」、{name:「李斯」,age:21,sex:"女"、{name:"王五",age:21,sex:"女"}」は、Jsonarayを括弧で表し、jsonオブジェクト配列です.
一つ目の単一のjsonオブジェクトのjsonデータを解析します.データはインターネットから取得します.デモの例は、携帯電話番号のホームを照会することである.
[java]view play copy print?
URL url StringBuffer sb = new StringBuffer() String ライン = null try { url = new URL( 「http://api.showji.com/Locating/default.aspx?m=13763089126&output=json&callback=querycallback"); HttpURLConnection コンサート = (HttpURLConnection) url.openConnection(); InputStream is = conn.getInputStream() BufferedReader ブザー = new BufferedReader new InputStream Reader(is); while (ライン = buffer.readline() != null { sb.apped } } catch (Mal formedURLException e) { e.print StockTrace(); } catch (IOException e) { e.print StockTrace(); }
querycalback(\"Mobile":"1373***","QueryResult"):「True」,「Province」:「広東」,「City」:「湛江」,「AreCode」:「0759」,「PostCode」:「524000」,「Corp」:「中国移動」,「Card」
このJsonの対象を切り取りたいです.
String js=sb.substring(s b.indexOf(')、sb.indexOf(')+1)
以下の関数はjsonオブジェクトを解析して、Callerrlocオブジェクトを返します.
Callrlocは実体類です.
[html]view pline copy print?
prvate Callrloc parse(String) Json { Callrloc my = null if (Json) == null || Json.length() < 1) return null try { my = new Callrloc() JSONObject jsonbj = new JSONObject(json);
my.set Mobile(jsonbj.get String); my.setQueryResult(jsonbj.get String); my.set Province(jsobj.get String); my.set City(jsonbj.get String); my.set Area Code(jsonbj.get String); my.set PostCode(jsonbj.get String); my.setCard(jsonbj.get String); my.set Corp(jsonbj.get String);
} catch (JSONException e) { e.print StockTrace(); } return my; )
jsonデータは「{name:「張三:」,age:21,sex:「女」、{name:「李斯」,age:21,sex:「女」},{name:「王五」,age:21,sex:「女」}」である.
リストを返します
[java]view play copy print?
prvate ArayList<myjson> parsem(String) Json { myjson my = null if (Json) == null || Json.length() < 1) return null try { JSONArray Jsonary = new JSONArray(json); ArayList<myjson> OBリスト = new ArayList<myjson>() for (int i = 0; i < jsonary.length() i++) { my = new myjson(); JSONObject jsonbj = JSONObject(i) my.set_name(jsonbj.get String); my.setuage(jsonbj.get Int); my.set usex(jsobj.get String); objlist.add(my) } return OBリスト } catch (JSONException e) { e.print StockTrace(); } return null }
Androidでは、クライアントとネットワーク(またはサーバ)通信に広く使われている.
JSONは名称/値ペアを示す方式です.
一番簡単な形式で、以下のようなJSONで「名称/値ペア」を表してもいいです.
{「name」:「Brett」、「lage」:22、「sex」:「女」}はJsonObjectを表しています.
「{name:"张三:",age:21,sex:"女"」、{name:「李斯」,age:21,sex:"女"、{name:"王五",age:21,sex:"女"}」は、Jsonarayを括弧で表し、jsonオブジェクト配列です.
一つ目の単一のjsonオブジェクトのjsonデータを解析します.データはインターネットから取得します.デモの例は、携帯電話番号のホームを照会することである.
[java]view play copy print?
URL url
URL url;
StringBuffer sb = new StringBuffer();
String line = null;
try {
url = new URL(
"http://api.showji.com/Locating/default.aspx?m=13763089126&output=json&callback=querycallback");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream is = conn.getInputStream();
BufferedReader buffer = new BufferedReader(
new InputStreamReader(is));
while ((line = buffer.readLine()) != null) {
sb.append(line);
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
ここで取得したデータは以下の通りです.querycalback(\"Mobile":"1373***","QueryResult"):「True」,「Province」:「広東」,「City」:「湛江」,「AreCode」:「0759」,「PostCode」:「524000」,「Corp」:「中国移動」,「Card」
このJsonの対象を切り取りたいです.
String js=sb.substring(s b.indexOf(')、sb.indexOf(')+1)
以下の関数はjsonオブジェクトを解析して、Callerrlocオブジェクトを返します.
Callrlocは実体類です.
[html]view pline copy print?
prvate Callrloc parse(String) Json {
private Callerloc parse(String json) {
Callerloc my = null;
if (json == null || json.length() < 1)
return null;
try {
my = new Callerloc();
JSONObject jsonobj = new JSONObject(json);
[html]view pline copy print?my.set Mobile(jsonbj.get String);
my.setMobile(jsonobj.getString("Mobile"));
my.setQueryResult(jsonobj.getString("QueryResult"));
my.setProvince(jsonobj.getString("Province"));
my.setCity(jsonobj.getString("City"));
my.setAreaCode(jsonobj.getString("AreaCode"));
my.setPostCode(jsonobj.getString("PostCode"));
my.setCard(jsonobj.getString("Card"));
my.setCorp(jsonobj.getString("Corp"));
[html]view pline copy print?} catch (JSONException e) {
} catch (JSONException e) {
e.printStackTrace();
}
return my;
}
二、解析Json配列jsonデータは「{name:「張三:」,age:21,sex:「女」、{name:「李斯」,age:21,sex:「女」},{name:「王五」,age:21,sex:「女」}」である.
リストを返します
[java]view play copy print?
prvate ArayList<myjson> parsem(String) Json {