json数组怎么解析?json数组解析方法

阳光 2021-05-14 21:17:49 java常见问答 8643

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工具网。

推荐阅读:

java如何做直播?java实现秀场直播功能

java没有返回值的方法怎么操作?使用要注意什么?

java运行报错显示什么?Java报错原因汇总