JSON数据现在是我们开发中用的最多的,大多数数据都是通过JSON方式进行传输并进行解析,这样可以提高工作效率,那json数组怎么解析?下面来我们就来给大家讲解一下。
package com.example.z111505; import java.io.IOException; import java.io.InputStream; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends ActionBarActivity { TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (TextView) findViewById(R.id.mytxt); // //將文件转化为流 //InputStream inputStream=getResources().openRawResource(R.raw.j111502); ////input:输入流 //byte[] ppp; //try { // ppp = new byte[inputStream.available()]; // inputStream.read(ppp); // String ttt=new String(ppp); // // inputStream.close(); // text.setText(ttt); // //2. String ttt 取出value // // 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(); // //-----解析json数组 // // //} catch (IOException e) { // // TODO Auto-generated catch block // e.printStackTrace(); //} catch (JSONException e) { // // TODO Auto-generated catch block // e.printStackTrace(); //} // // //====解析json数组 InputStream inputStream = getResources() .openRawResource(R.raw.j111503); //把raw文件下的j111503文件下的所有内容变成输入流 try { //inputStream.available() 流的可利用长度 byte pp[] = new byte[inputStream.available()]; //根据流的可利用长度转化为字节数组 inputStream.read(pp); //将流里的数据读到pp字节数组里 inputStream.close(); // 流中的资源使用完 关闭留 String tt = new String(pp); //将byte字节数组转成字符串 //如果是乱码 则String tt=new String(pp,"utf-8");或者gbk //如果实现不了 将json文件中的分号改为英文的逗号 Log.e("aaaa", tt); JSONArray array = new JSONArray(tt); //将字符串转成json数组 for (int i = 0; i < array.length(); i++) { < p = "" > String b0 = array.getString(i); //从数组里取出数组 Log.e("aaaa", b0); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
补充步骤:解析带中括号的{}
第一步:将文件转化为输入流,并将输入流存储到字节数组里 关闭流
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++) { < p = "" > String b0 = array.getString(i); //从数组里取出数组 Log.e("aaaa", b0); }
json数组解析方法就是以上这些,json解析是开发中最重要的,毕竟开发中大多数数据都要经过json解析,从而提高效率。最后大家如果想要了解更多json工具教程知识,敬请关注奇Q工具网。
推荐阅读: