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

posted @ 2017-02-26 11:35  943987243  阅读(17686)  评论(0编辑  收藏  举报