android能看json嗎,json android

本文目錄一覽:

json是什麼格式,在安卓手機上用什麼打開

json就是一個字符串,類似樹形結構。

只要沒加過密,一般的文本編輯器就可以打開。

android怎麼看json數據格式?

JSON有兩種表示結構,對象和數組。

對象結構以」{」大括號開始,以」}」大括號結束。中間部分由0或多個以」,」分隔的」key(關鍵字)/value(值)」對構成,關鍵字和值之間以」:」分隔,語法結構如下

{

key1:value1,

key2:value2,

}其中關鍵字是字符串,而值可以是字符串,數值,true,false,null,對象或數組

數組結構以」[」開始,」]」結束。中間由0或多個以」,」分隔的值列表組成,語法結構如下

[

{

key1:value1,

key2:value2

},

{

key3:value3,

key4:value4

}

]

給服務端發送請求後,服務端會返回一連串的數據,這些數據在大部分情況下都是XML格式或者JSON格式。然後JSON相對XML來說解析相對方便一些,所以先說說JSON的解析。

JSON的基本數據格式有這幾種:

1.一個JSON對象——JSONObject

{“name”:”胡小威” , “age”:20 , “male”:true}

2.一個JSON數組——JSONArray

[{“name”:”胡小威” , “age”:20 , “male”:true},{“name”:”趙小亮” , “age”:22 , “male”:false}]

3.複雜一點的JSONObject

{“name”:”胡小威”, “age”=20, “male”:true, “address”:{“street”:”嶽麓山南”, “city”:”長沙”,”country”:”中國”}}

4.複雜一點的JSONArray

[

{“name”:”胡小威”, “age”=20, “male”:true, “address”:{“street”:”嶽麓山南”, “city”:”長沙”,”country”:”中國”}},

{“name”:”趙小亮”, “age”=22, “male”:false, “address”:{“street”:”九州港”, “city”:”珠海”,”country”:”中國”}}

]

android 解析json用那個包裏面的方法比較好呢?

android 解析json還有用Google出品的Gson比較好,具體步驟為:

1、首先,從 code.google.com/p/google-gson/downloads/list下載GsonAPI:

google-gson-1.7.1-release.zip 把gson-1.7.jar copy到libs(項目根目錄新建一個libs文件夾)中。 可以使用以下兩種方法解析JSON數據,通過獲取JsonReader對象解析JSON數據。

代碼如下:

String jsonData = “[{\”username\”:\”arthinking\”,\”userId\”:001},{\”username\”:\”Jason\”,\”userId\”:002}]”;

try{

JsonReader reader = new JsonReader(new StringReader(jsonData));

reader.beginArray();

while(reader.hasNext()){

reader.beginObject();

while(reader.hasNext()){

String tagName = reader.nextName();

if(tagName.equals(“username”)){

System.out.println(reader.nextString());

}

else if(tagName.equals(“userId”)){

System.out.println(reader.nextString());

}

}

reader.endObject();

}

reader.endArray();

}

catch(Exception e){

e.printStackTrace();

}

2、使用Gson對象獲取User對象數據進行相應的操作:

代碼如下:

Type listType = new TypeTokenLinkedListUser(){}.getType();

Gson gson = new Gson();

LinkedListUser users = gson.fromJson(jsonData, listType);

for (Iterator iterator = users.iterator(); iterator.hasNext();) {

User user = (User) iterator.next();

System.out.println(user.getUsername());

System.out.println(user.getUserId());

}

3、如果要處理的JSON字符串只包含一個JSON對象,則可以直接使用fromJson獲取一個User對象:

代碼如下:

String jsonData = “{\”username\”:\”arthinking\”,\”userId\”:001}”;

Gson gson = new Gson();

User user = gson.fromJson(jsonData, User.class);

System.out.println(user.getUsername());

System.out.println(user.getUserId());

android 怎麼看json數據格式

給服務端發送請求後,服務端會返回一連串的數據,這些數據在大部分情況下都是XML格式或者JSON格式。然後JSON相對XML來說解析相對方便一些,所以先說說JSON的解析。

JSON的基本數據格式有這幾種:

1.一個JSON對象——JSONObject

{“name”:”胡小威” , “age”:20 , “male”:true}

2.一個JSON數組——JSONArray

[{“name”:”胡小威” , “age”:20 , “male”:true},{“name”:”趙小亮” , “age”:22 , “male”:false}]

3.複雜一點的JSONObject

{“name”:”胡小威”, “age”=20, “male”:true, “address”:{“street”:”嶽麓山南”, “city”:”長沙”,”country”:”中國”}}

4.複雜一點的JSONArray

[

{“name”:”胡小威”, “age”=20, “male”:true, “address”:{“street”:”嶽麓山南”, “city”:”長沙”,”country”:”中國”}},

{“name”:”趙小亮”, “age”=22, “male”:false, “address”:{“street”:”九州港”, “city”:”珠海”,”country”:”中國”}}

]

5.來個更複雜的,這是我從愛幫公交上扒取的數據

{“buses”:{“bus”:[{“last_foot_dist”:”0″,”time”:”37″,”segments”:{“segment”:[{“line_name”:”立珊專線(中南大學學生公寓-長沙火車站)”,”foot_dist”:”362″,”stat_xys”:””,”stats”:”嶽麓山南;湖南師大;二里半;嶽麓山北;市四醫院;華圖教育(太平街口);牛耳教育(南陽街口);韭菜園;曙光路口;長島路口;長沙火車站”,”end_stat”:”長沙火車站”,”line_xys”:””,”line_dist”:”7535″,”start_stat”:”嶽麓山南”}]},”foot_dist”:”362″,”dist”:”7897″},{“last_foot_dist”:”0″,”time”:”41″,”segments”:{“segment”:[{“line_name”:”旅1路(科教新村-長沙火車站)”,”foot_dist”:”337″,”stat_xys”:””,”stats”:”嶽麓山南;湖南師大;二里半;嶽麓山北;市四醫院;華圖教育(太平街口);蔡鍔中路口;韭菜園;喬庄;曙光路口;長島路口;五一東村;車站路口;長沙火車站”,”end_stat”:”長沙火車站”,”line_xys”:””,”line_dist”:”7822″,”start_stat”:”嶽麓山南”}]},”foot_dist”:”337″,”dist”:”8159″}]}}

接下來是解析部分

一、直接解析

1.{“name”:”胡小威” , “age”:20 , “male”:true}

Java代碼

public void parseJsonObject(String json) {

try {

JSONObject jsonObject = new JSONObject(json);

String name = jsonObject.getString(“name”);

int age = jsonObject.getInt(“age”);

boolean male = jsonObject.getBoolean(“male”);

//接下來該幹嘛幹嘛

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

2.[{“name”:”胡小威” , “age”:20 , “male”:true},{“name”:”趙小亮” , “age”:22 , “male”:false}]

Java代碼

public void parseJSONArray(String json) {

try {

JSONArray jsonArray = new JSONArray(json);

for (int i = 0; i jsonArray.length(); i++) {

jsonObject = jsonArray.getJSONObject(i);

String name = jsonObject.getString(“name”);

int age = jsonObject.getInt(“age”);

boolean male = jsonObject.getBoolean(“male”);

//接下來該幹嘛幹嘛

}

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

3.{“name”:”胡小威”, “age”=20, “male”:true, “address”:{“street”:”嶽麓山南”, “city”:”長沙”,”country”:”中國”}}

Java代碼

public void parseJsonPerson(String json) {

try {

JSONObject jsonObject = new JSONObject(json);

String name = jsonObject.getString(“name”);

int age = jsonObject.getInt(“age”);

boolean male = jsonObject.getBoolean(“male”);

JSONObject addressJSON = jsonObject.getJSONObject(“address”);

String street = addressJSON.getString(“street”);

String city = addressJSON.getString(“city”);

String country = addressJSON.getString(“country”);

Address address = new Address(street, city, country);

Person person = new Person(name, age, male, address);

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

4.

[

{“name”:”胡小威”, “age”=20, “male”:true, “address”:{“street”:”嶽麓山南”, “city”:”長沙”,”country”:”中國”}},

{“name”:”趙小亮”, “age”=22, “male”:false, “address”:{“street”:”九州港”, “city”:”珠海”,”country”:”中國”}}

]

Java代碼

public void parseJsonArrayPerson(String json) {

ListPerson persons = new ArrayListPerson();

try {

jsonArray = new JSONArray(json);

for (int i = 0; i jsonArray.length(); i++) {

jsonObject = jsonArray.getJSONObject(i);

String name = jsonObject.getString(“name”);

int age = jsonObject.getInt(“age”);

boolean male = jsonObject.getBoolean(“male”);

JSONObject addressJSON = jsonObject.getJSONObject(“address”);

String street = addressJSON.getString(“street”);

String city = addressJSON.getString(“city”);

String country = addressJSON.getString(“country”);

Address address = new Address(street, city, country);

Person person = new Person(name, age, male, address);

persons.add(person);

Log.v(“juno”, person.toString());

}

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

Log.v(“juno”, persons.toString());

}

5. {“buses”:{“bus”:[{“last_foot_dist”:”0″,”time”:”37″,”segments”:{“segment”:[{“line_name”:”立珊專線(中南大學學生公寓-長沙火車站)”,”foot_dist”:”362″,”stat_xys”:””,”stats”:”嶽麓山南;湖南師大;二里半;嶽麓山北;市四醫院;華圖教育(太平街口);牛耳教育(南陽街口);韭菜園;曙光路口;長島路口;長沙火車站”,”end_stat”:”長沙火車站”,”line_xys”:””,”line_dist”:”7535″,”start_stat”:”嶽麓山南”}]},”foot_dist”:”362″,”dist”:”7897″},{“last_foot_dist”:”0″,”time”:”41″,”segments”:{“segment”:[{“line_name”:”旅1路(科教新村-長沙火車站)”,”foot_dist”:”337″,”stat_xys”:””,”stats”:”嶽麓山南;湖南師大;二里半;嶽麓山北;市四醫院;華圖教育(太平街口);蔡鍔中路口;韭菜園;喬庄;曙光路口;長島路口;五一東村;車站路口;長沙火車站”,”end_stat”:”長沙火車站”,”line_xys”:””,”line_dist”:”7822″,”start_stat”:”嶽麓山南”}]},”foot_dist”:”337″,”dist”:”8159″}]}}

Java代碼

public ListSalution parseJSON(String str){

Log.d(“返回的JSON數據:”, str);

ListSalution busList = new ArrayListSalution();

try {

JSONObject jsonObject = new JSONObject(str);

JSONObject busesJSON = jsonObject.getJSONObject(“buses”);

JSONArray busJSArray=busesJSON.getJSONArray(“bus”);

for(int i=0;ibusJSArray.length();i++){

JSONObject busJSObject = busJSArray.getJSONObject(i);

JSONObject segsJSObject=busJSObject.getJSONObject(“segments”);

JSONArray segJSArray=segsJSObject.getJSONArray(“segment”);

Salution st=new Salution();

for(int j=0;jsegJSArray.length();j++){

if(j==0){

JSONObject segJSObject = segJSArray.getJSONObject(j);

st.setLine_name1(segJSObject.getString(“line_name”));

Log.d(“line_name”, segJSObject.getString(“line_name”));

st.setStats1(segJSObject.getString(“stats”));

st.setEnd_stat1(segJSObject.getString(“end_stat”));

st.setStart_stat1(segJSObject.getString(“start_stat”));

}

if(j==1){

JSONObject segJSObject = segJSArray.getJSONObject(j);

st.setLine_name2(segJSObject.getString(“line_name”));

Log.d(“line_name”, segJSObject.getString(“line_name”));

st.setStats2(segJSObject.getString(“stats”));

st.setEnd_stat2(segJSObject.getString(“end_stat”));

st.setStart_stat2(segJSObject.getString(“start_stat”));

}

}

busList.add(st);

}

return busList;

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

這裡我只是簡單獲取了幾個我想要的數據。

二、使用JSON類庫Gson 來解析JSON

Gson 是 Google 提供的用來在 Java 對象和 JSON 數據之間進行映射的 Java 類庫。可以將一個 JSON 字符串轉成一個 Java 對象,或者反過來。

首先,從 code.google.com/p/google-gson/downloads/list下載GsonAPI

Java代碼

google-gson-1.7.1-release.zip

再把gson-1.7.jar copy到libs

可以使用兩種方法解析

①、通過獲取JsonReader對象解析JSON數據:

Java代碼

String jsonData = “[{\”username\”:\”arthinking\”,\”userId\”:001},{\”username\”:\”Jason\”,\”userId\”:002}]”;

try{

JsonReader reader = new JsonReader(new StringReader(jsonData));

reader.beginArray();

while(reader.hasNext()){

reader.beginObject();

while(reader.hasNext()){

String tagName = reader.nextName();

if(tagName.equals(“username”)){

System.out.println(reader.nextString());

}

else if(tagName.equals(“userId”)){

System.out.println(reader.nextString());

}

}

reader.endObject();

}

reader.endArray();

}

catch(Exception e){

e.printStackTrace();

}

②、通過把JSON數據映射成一個對象,使用Gson對象的fromJson()方法獲取一個對象數組進行操作

Java代碼

Type listType = new TypeTokenLinkedListUser(){}.getType();

Gson gson = new Gson();

LinkedListUser users = gson.fromJson(jsonData, listType);

for (Iterator iterator = users.iterator(); iterator.hasNext();) {

User user = (User) iterator.next();

System.out.println(user.getUsername());

System.out.println(user.getUserId());

}

我一般是採用直接解析,添加類庫神馬的最討厭了···

還有,抱怨一下,iteye的編輯弱爆了!!!

轉載

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/185288.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-26 12:18
下一篇 2024-11-26 12:18

相關推薦

  • JSON的MD5

    在Web開發過程中,JSON(JavaScript Object Notation)是最常用的數據格式之一。MD5(Message-Digest Algorithm 5)是一種常用…

    編程 2025-04-29
  • 使用Java將JSON寫入HDFS

    本篇文章將從以下幾個方面詳細闡述Java將JSON寫入HDFS的方法: 一、HDFS簡介 首先,先來了解一下Hadoop分佈式文件系統(HDFS)。HDFS是一個可擴展性高的分佈式…

    編程 2025-04-29
  • Android ViewPager和ScrollView滑動衝突問題

    Android開發中,ViewPager和ScrollView是兩個常用的控件。但是當它們同時使用時,可能會發生滑動衝突的問題。本文將從多個方面介紹解決Android ViewPa…

    編程 2025-04-28
  • 如何使用Newtonsoft datatable轉Json

    Newtonsoft DataTable 是一個基於.NET的JSON框架,也是一個用於序列化和反序列化JSON的強大工具。 在本文中,我們將學習如何使用Newtonsoft Da…

    編程 2025-04-28
  • Android如何點擊其他區域收起軟鍵盤

    在Android應用中,當輸入框獲取焦點彈出軟鍵盤後,我們希望能夠點擊其他區域使軟鍵盤消失,以提升用戶體驗。本篇文章將說明如何實現這一功能。 一、獲取焦點並顯示軟鍵盤 在Andro…

    編程 2025-04-28
  • JPRC – 輕鬆創建可讀性強的 JSON API

    本文將介紹一個全新的 JSON API 框架 JPRC,通過該框架,您可以輕鬆創建可讀性強的 JSON API,提高您的項目開發效率和代碼可維護性。接下來將從以下幾個方面對 JPR…

    編程 2025-04-27
  • Python存為JSON的方法及實例

    本文將從以下多個方面對Python存為JSON做詳細的闡述。 一、JSON簡介 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易於人閱…

    編程 2025-04-27
  • 使用Python獲取JSON並解析

    本文將介紹如何使用Python獲取JSON數據並解析相關內容。通過使用Python的第三方庫,我們可以輕鬆地處理JSON數據,包括讀取、提取和操作JSON數據。 一、獲取JSON數…

    編程 2025-04-27
  • 使用Spread 8展示JSON數據

    使用Spread 8可以方便地展示JSON數據,本文將詳細介紹如何利用Spread 8展示JSON數據。 一、Spread 8簡介 Spread 8是一款強大的電子表格軟件,可以方…

    編程 2025-04-27
  • 如何在json轉實體類時忽略大小寫

    本文將從以下幾個方面介紹如何在json轉實體類時忽略大小寫。 一、使用Gson庫實現json轉實體類忽略大小寫 Gson是Google提供的Java JSON操作庫,它提供了簡單易…

    編程 2025-04-27

發表回復

登錄後才能評論