溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android json 解析

發(fā)布時間:2020-06-02 05:49:42 來源:網(wǎng)絡 閱讀:411 作者:鄭傳余 欄目:移動開發(fā)

一、json簡介

    json指的是javascript對象表示法(javascript object notation),它是一種輕量級文本數(shù)據(jù)交換格式,類似于xml,但比xml更小,更快,更易解析(xml需要下載到手機端進行解析);

    json是基于javascript的一個子集,它使用javascript語法來描述數(shù)據(jù)對象,但是json任然獨立于語言和平臺,json解析器和json庫支持許多不同編程語言,同時也易于機器解析和生成;

優(yōu)酷:http://v.youku.com/v_show/id_XODYzMTEwODY4.html

愛奇藝:http://www.iqiyi.com/w_19rsb9thy1.html#vfrm=5-7-4-1(涉及服務器的搭建可見視頻)

二、json數(shù)據(jù)解析

    1、json object(多個,也可以單個)

       {"person":{"address":"上海黃浦區(qū)","id":1001,"name":"jack"}} 

    2、解析,一個對象,多組值,可以使用相同的語法表示多個值(每個值包含多個記錄):
       這里最值得注意的是,能夠表示多個值,每個值進而包含多個值。但是還應該注意,在不同的主條目,記錄中實際的名稱 / 值對可以      
       不一樣。JSON 是完全動態(tài)的,允許在 JSON 結構的中間改變表示數(shù)據(jù)的方式。在處理 JSON 格式的數(shù)據(jù)時,沒有需要遵守的預定義的約束。所以,在同樣的數(shù)據(jù)結構中,可以改變表      示數(shù)據(jù)的方式,甚至可以以不同方式表示同一事物。

       {"persons":[{"address":"上海黃浦區(qū)","id":1001,"name":"jack"},{"address":"上海閔行區(qū)","id":1002,"name":"rose"},{"address":"上海黃浦區(qū)","id":1003,"name":"mick"}]}
      
    3、解析json Array

       {"listString":["北京","上海","湖南"]}

    4、解析json object 和 json array 混合對象

       {"listMap":[{"id":1001,"address":"北京","name":"jack"},{"id":1001,"address":"上海","name":"rose"}]}

文件目錄:

android json 解析

activity_main.xml代碼不再給出

android json 解析


[html] view plaincopy

  1. public class MainActivity extends Activity {  

  2.       

  3.     private Button btn_person;  

  4.     private Button btn_persons;  

  5.     private Button btn_listString;  

  6.     private Button btn_listMap;  

  7.     private TextView tv_show;  

  8.       

  9.     private static String PATH = "http://192.168.1.100:8080/2.9/com/JsonServlet";    

  10.     private static final String TAG = "MainActivity";   

  11.   

  12.     @Override  

  13.     protected void onCreate(Bundle savedInstanceState) {  

  14.         super.onCreate(savedInstanceState);  

  15.         setContentView(R.layout.activity_main);  

  16.           

  17.         btn_person = (Button)findViewById(R.id.btn_person);  

  18.         btn_persons = (Button)findViewById(R.id.btn_persons);  

  19.         btn_listString = (Button)findViewById(R.id.btn_listString);  

  20.         btn_listMap = (Button)findViewById(R.id.btn_listMap);  

  21.         tv_show = (TextView)findViewById(R.id.tv_show);  

  22.           

  23.         btn_person.setOnClickListener(new MyButtonListenerPersion());  

  24.         btn_persons.setOnClickListener(new MyButtonListenerPersions());  

  25.         btn_listString.setOnClickListener(new MyButtonListenerlistString());  

  26.         btn_listMap.setOnClickListener(new MyBuutonListenerlistMap());  

  27.           

  28.     }  

  29.       

  30.     class MyButtonListenerPersion implements OnClickListener{  

  31.   

  32.         @Override  

  33.         public void onClick(View v) {  

  34.               

  35.                 String path2=PATH+"?action_flag=person";    

  36.                 String jsonString1 = HttpUtils.getJsonContent(path2);    

  37.                 Person person = JsonTools.getPerson("person", jsonString1);   

  38.                 tv_show.setText(person.toString());  

  39.                 Log.i(TAG, person.toString());                

  40.         }     

  41.     }  

  42.       

  43.     class MyButtonListenerPersions implements OnClickListener{  

  44.   

  45.         @Override  

  46.         public void onClick(View v) {  

  47.               

  48.              String path3=PATH+"?action_flag=persons";    

  49.                 String jsonString2 = HttpUtils.getJsonContent(path3);    

  50.                 List<Person> list2 = JsonTools.getPersons("persons", jsonString2);    

  51.                 tv_show.setText(list2.toString());  

  52.                 Log.i(TAG, list2.toString());     

  53.         }     

  54.     }  

  55.       

  56.     class MyButtonListenerlistString implements OnClickListener{  

  57.   

  58.         @Override  

  59.         public void onClick(View v) {  

  60.               

  61.             String path4=PATH+"?action_flag=listString";    

  62.             String jsonString3 = HttpUtils.getJsonContent(path4);    

  63.             List<String> list3 = JsonTools.getList("listString", jsonString3);    

  64.             tv_show.setText(list3.toString());  

  65.             Log.i(TAG, list3.toString());  

  66.               

  67.         }     

  68.     }  

  69.       

  70.     class MyBuutonListenerlistMap implements OnClickListener{  

  71.   

  72.         @Override  

  73.         public void onClick(View v) {  

  74.               

  75.             String path5=PATH+"?action_flag=listMap";    

  76.             String jsonString4 = HttpUtils.getJsonContent(path5);    

  77.             List<Map<String,Object>> list4 = JsonTools.getListMap("listMap", jsonString4);    

  78.             tv_show.setText(list4.toString());  

  79.             Log.i(TAG, list4.toString());   

  80.               

  81.         }         

  82.     }  

  83.       

  84. }  


/********************************************************************************************************************************************************************************/



[html] view plaincopy

  1. public class Person {  

  2.   

  3.     private int id;  

  4.     private String name;  

  5.     private String address;  

  6.   

  7.     public Person() {  

  8.         super();  

  9.     }  

  10.   

  11.     public Person(int id, String name, String address) {  

  12.         super();  

  13.         this.id = id;  

  14.         this.name = name;  

  15.         this.address = address;  

  16.     }  

  17.   

  18.     public int getId() {  

  19.         return id;  

  20.     }  

  21.   

  22.     public void setId(int id) {  

  23.         this.id = id;  

  24.     }  

  25.   

  26.     public String getName() {  

  27.         return name;  

  28.     }  

  29.   

  30.     public void setName(String name) {  

  31.         this.name = name;  

  32.     }  

  33.   

  34.     public String getAddress() {  

  35.         return address;  

  36.     }  

  37.   

  38.     public void setAddress(String address) {  

  39.         this.address = address;  

  40.     }  

  41.   

  42.     @Override  

  43.     public String toString() {  

  44.         return "address=" + address + "id=" + id + "name=" + name;  

  45.     }  

  46.   

  47. }  


/************************************************************************************************************************************************************************************/



[html] view plaincopy

  1. public class JsonTools {  

  2.       

  3.      public JsonTools() {    

  4.            

  5.         }    

  6.             

  7.         /**    

  8.          * 獲取對象數(shù)據(jù)    

  9.          * @param key    

  10.          * @param jsonString    

  11.          * @return    

  12.          */    

  13.         public static Person getPerson(String key,String jsonString){    

  14.             Person person = new Person();    

  15.             try {  

  16.                 //構建一個JSONObject jsontokener  

  17.                 JSONObject jsonObject = new JSONObject(jsonString);    

  18.                 //得到JSONObject值與密鑰相關,就是對象  

  19.                 JSONObject personObject = jsonObject.getJSONObject(key);    

  20.                //取得數(shù)據(jù)  

  21.                 person.setId(personObject.getInt("id"));    

  22.                 person.setName(personObject.getString("name"));    

  23.                 person.setAddress(personObject.getString("address"));    

  24.             } catch (JSONException e) {    

  25.                 e.printStackTrace();    

  26.             }    

  27.             return person;    

  28.         }    

  29.             

  30.         /**    

  31.          * 獲取對象數(shù)組數(shù)據(jù)    

  32.          * @param key    

  33.          * @param jsonString    

  34.          * @return    

  35.          */    

  36.         public static List<Person> getPersons(String key,String jsonString){    

  37.             List<Person> list = new ArrayList<Person>();    

  38.             try {    

  39.                 JSONObject jsonObject = new JSONObject(jsonString);    

  40.                 //返回json的數(shù)組    

  41.                 JSONArray jsonArray = jsonObject.getJSONArray(key);    

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

  43.                     JSONObject jsonObject2 = jsonArray.getJSONObject(i);    

  44.                     Person person = new Person();    

  45.                     person.setId(jsonObject2.getInt("id"));    

  46.                     person.setName(jsonObject2.getString("name"));    

  47.                     person.setAddress(jsonObject2.getString("address"));    

  48.                     list.add(person);    

  49.                 }    

  50.             } catch (JSONException e) {    

  51.                 e.printStackTrace();    

  52.             }    

  53.                 

  54.             return list;    

  55.         }    

  56.         /**    

  57.          * 獲取String數(shù)組數(shù)據(jù)    

  58.          * @param key    

  59.          * @param jsonString    

  60.          * @return    

  61.          */    

  62.         public static List<String> getList(String key,String jsonString){    

  63.             List<String> list = new ArrayList<String>();    

  64.             try {    

  65.                 JSONObject jsonObject = new JSONObject(jsonString);    

  66.                 JSONArray jsonArray = jsonObject.getJSONArray(key);    

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

  68.                     String msg = jsonArray.getString(i);    

  69.                     list.add(msg);    

  70.                 }    

  71.             } catch (JSONException e) {    

  72.                 e.printStackTrace();    

  73.             }    

  74.             return list;    

  75.         }    

  76.         /**    

  77.          * 獲取對象的Map集合數(shù)據(jù)    

  78.          * @param key    

  79.          * @param jsonString    

  80.          * @return    

  81.          */    

  82.         public static List<Map<String,Object>> getListMap(String key,String jsonString){    

  83.             List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();    

  84.             try {    

  85.                 JSONObject jsonObject = new JSONObject(jsonString);    

  86.                 JSONArray jsonArray = jsonObject.getJSONArray(key);    

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

  88.                     JSONObject jsonObject2 = jsonArray.getJSONObject(i);    

  89.                     Map<String,Object> map = new HashMap<String, Object>();    

  90.                     Iterator<String> iterator = jsonObject2.keys();    

  91.                     while(iterator.hasNext()){    

  92.                         String json_key = iterator.next();    

  93.                         Object json_value = jsonObject2.get(json_key);    

  94.                         if(json_value==null){    

  95.                             json_value = "";    

  96.                         }    

  97.                         map.put(json_key, json_value);    

  98.                     }    

  99.                     list.add(map);    

  100.                 }    

  101.             } catch (JSONException e) {    

  102.                 e.printStackTrace();    

  103.             }               

  104.             return list;    

  105.         }    

  106.   

  107. }  


/************************************************************************************************************************************************************************************/



[html] view plaincopy

  1. public class HttpUtils {  

  2.       

  3.     /*  

  4.      * 打開遠程鏈接getContent  

  5.      */  

  6.       

  7.     public HttpUtils() {    

  8.     }    

  9.         

  10.     public static String getJsonContent(String path){    

  11.         try {    

  12.             //指定資源參數(shù)實例  

  13.             URL url = new URL(path);  

  14.             //url.openConnection()指定打開一個遠程資源  

  15.             //HttpURLConnection抽象的Http連接方法extends URLConnection  

  16.             HttpURLConnection connection = (HttpURLConnection)url.openConnection();    

  17.             //在3秒內不能建立連接,將拋異常  

  18.             connection.setConnectTimeout(3000);  

  19.             //設置請求的命令將被發(fā)送到遠程HTTP服務器。這個方法只能在連接稱為。  

  20.             connection.setRequestMethod("GET");  

  21.             //設置標志指示是否允許輸入這個URLConnection  

  22.             connection.setDoInput(true);    

  23.             //得到服務器返回的參數(shù)值  

  24.             int code = connection.getResponseCode();    

  25.             if(code == 200){    

  26.                 return changeInputStream(connection.getInputStream());    

  27.             }    

  28.         } catch (MalformedURLException e) {    

  29.             e.printStackTrace();    

  30.         } catch (IOException e) {    

  31.             e.printStackTrace();    

  32.         }    

  33.         return null;    

  34.     }    

  35.     

  36.     /**    

  37.      * 將一個輸入流轉換成指定編碼的字符串      

  38.      * @param inputStream    

  39.      * @return    

  40.      */    

  41.     private static String changeInputStream(InputStream inputStream) {    

  42.         String jsonString = "";    

  43.         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();    

  44.         int len = 0;    

  45.         byte[] data = new byte[1024];    

  46.         try {    

  47.             while((len=inputStream.read(data))!=-1){    

  48.                 outputStream.write(data,0,len);    

  49.             }    

  50.             jsonString = new String(outputStream.toByteArray());    

  51.         } catch (IOException e) {    

  52.             e.printStackTrace();    

  53.         }    

  54.         return jsonString;    

  55.     }    

  56.   

  57. }  



附件:http://down.51cto.com/data/2365260
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI