json 數組的兩種解析方式


 1 package com.example.z111505;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 
 6 import org.json.JSONArray;
 7 import org.json.JSONException;
 8 import org.json.JSONObject;
 9 
10 import android.os.Bundle;
11 import android.support.v7.app.ActionBarActivity;
12 import android.util.Log;
13 import android.widget.TextView;
14 import android.widget.Toast;
15 
16 
17 public class MainActivity extends ActionBarActivity {
18 
19     TextView text;
20     @Override
21     protected void onCreate(Bundle savedInstanceState) {
22         super.onCreate(savedInstanceState);
23         setContentView(R.layout.activity_main);
24         text=(TextView) findViewById(R.id.mytxt);
25         //
26         //將文件轉化為流
27 //InputStream inputStream=getResources().openRawResource(R.raw.j111502);
28 ////input:輸入流
29 //byte[] ppp;
30 //try {
31 //    ppp = new byte[inputStream.available()];
32 //    inputStream.read(ppp);
33 //    String ttt=new String(ppp);
34 //    
35 //    inputStream.close();
36 //    text.setText(ttt);
37 //    //2. String ttt 取出value
38 //    
39 //    JSONObject jsonObject = new JSONObject(ttt);
40 //    String ggg=jsonObject.getString("ttt");
41 //    String gg2=jsonObject.getString("hhhh");
42 //    Toast.makeText(MainActivity.this, ggg, 1).show();
43 ////    Toast.makeText(MainActivity.this, gg2, 1).show();
44 //    //-----解析json數組
45 //    
46 //    
47 //} catch (IOException e) {
48 //    // TODO Auto-generated catch block
49 //    e.printStackTrace();
50 //} catch (JSONException e) {
51 //    // TODO Auto-generated catch block
52 //    e.printStackTrace();
53 //}
54 //
55 //        
56         //====解析json數組
57         InputStream inputStream=getResources().openRawResource(R.raw.j111503);
58         //把raw文件下的j111503文件下的所有內容變成輸入流
59         try {
60             //inputStream.available() 流的可利用長度
61             byte pp[]=new byte[inputStream.available()];
62             //根據流的可利用長度轉化為字節數組
63             inputStream.read(pp);
64             //將流里的數據讀到pp字節數組里
65             
66             inputStream.close();
67             // 流中的資源使用完 關閉留
68             String tt=new String(pp);
69             //將byte字節數組轉成字符串
70             //如果是亂碼 則String tt=new String(pp,"utf-8");或者gbk
71             //如果實現不了 將json文件中的分號改為英文的逗號
72             Log.e("aaaa", tt);
73             JSONArray array=new JSONArray(tt);
74             //將字符串轉成json數組
75             for(int i=0;i<array.length();i++){
76                 
77                 String b0=array.getString(i);
78                 //從數組里取出數組
79                 Log.e("aaaa", b0);
80             }
81         } catch (IOException e) {
82             // TODO Auto-generated catch block
83             e.printStackTrace();
84         } catch (JSONException e) {
85             // TODO Auto-generated catch block
86             e.printStackTrace();
87         }
88     }
89 
90     
91 }

補充步驟:解析帶中括號的{}

第一步:將文件轉化為輸入流,並將輸入流存儲到字節數組里 關閉流

InputStream inputStream=getResources().openRawResource(R.raw.j111502);
byte[] ppp=new byte[inputStream.available]
 //根據流的可利用長度轉化為字節數組
     inputStream.read(pp);
           //將流里的數據讀到pp字節數組里
          
 inputStream.close();
 
        

  

第二步:將字節數組轉化為字符串,

String ttt=new String(ppp);

  

第三步:用jsonobject的方式取出字符,並顯示

JSONObject jsonObject = new JSONObject(ttt);
    String ggg=jsonObject.getString("ttt");
   String gg2=jsonObject.getString("hhhh");
   Toast.makeText(MainActivity.this, ggg, 1).show();   Toast.makeText(MainActivity.this, gg2, 1).show();

  第二種解析解析數組[]

前幾個步驟都一樣只有最后一個步驟不一樣

第三步:將得到的數據保存到jsonarray里面,用循環的方式讀取出來

JSONArray array=new JSONArray(tt);
            //將字符串轉成json數組
            for(int i=0;i<array.length();i++){
               
              String b0=array.getString(i);
                 //從數組里取出數組
              Log.e("aaaa", b0);
            }

  

ps:在Android方面是一個新手這是為了給我自己做一個筆記,如果有錯誤的話請各位大神指出謝謝。

 

 

鏈接:http://pan.baidu.com/s/1nuZM6t7 密碼:0tah


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM