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