解析Json

今天给大家讲的是解析Json 其中有三种可以解析的方式1.JsonArray JsonObject 2.Gson 3.Fast-json

直接上代码,这里也要重写AsyncTask的两个方法

1.0:使用原生态

 class MyTask extends AsyncTask{

        @Override
        protected Object doInBackground(Object[] objects) {
            try {
                URL url=new URL(getString(R.string.server_name)+"persons.json");
                HttpURLConnection connection= (HttpURLConnection) url.openConnection();
                //设置请求方式‘
                connection.setRequestMethod("GET");
                connection.setConnectTimeout(5000);

                //获取结果码
                int code=connection.getResponseCode();
                if(code==200){
                    InputStream is=connection.getInputStream();

                    //测试
                    BufferedReader br=new BufferedReader(new InputStreamReader(is));
                    String str=null;
                    StringBuffer stringBuffer=new StringBuffer();
                    while((str=br.readLine())!=null){
                        stringBuffer.append(str);
                    }
                    Log.i("test",stringBuffer.toString());
                    //02.开始解析Json
                    //01.使用原生态
                    JSONObject jsonObject=new JSONObject(stringBuffer.toString());
                    int list=jsonObject.getInt("list");
                    Log.i("test","长度:"+list);

                    JSONArray jsonArray=jsonObject.getJSONArray("persons");

                    for (int i = 0; i <jsonArray.length() ; i++) {
                        JSONObject object=jsonArray.getJSONObject(i);
                        int pid=object.getInt("pid");
                        String pname=object.getString("pname");
                        int page=object.getInt("page");
                        Log.i("test",pid+" "+pname+" "+page);
                    }

onPostExecute

   @Override
        protected void onPostExecute(Object o) {
            super.onPostExecute(o);
        }




server_name

<string name="server_name">http://193.168.2.210/</string>
2.0:Gson解析json
 02.使用Gson解析json
                    Gson gson=new Gson();
                    BigPerson bigPerson=gson.fromJson(stringBuffer.toString(),BigPerson.class);
                    Log.i("test",bigPerson.getList()+"");

                    List<SmallPerson> persons=bigPerson.getPersons();
                    for (SmallPerson person : persons) {
                       Log.i("test",person.toString());
                    }
这里需要联网下载Gson,同时也要写两个Person类

BigPerson

public class BigPerson {
    private int list;
    private List<SmallPerson> persons;

    public BigPerson() {
    }

    public BigPerson(int list, List<SmallPerson> persons) {
        this.list = list;
        this.persons = persons;
    }

    public int getList() {
        return list;
    }

    public void setList(int list) {
        this.list = list;
    }

    public List<SmallPerson> getPersons() {
        return persons;
    }

    public void setPersons(List<SmallPerson> persons) {
        this.persons = persons;
    }
}
SmallPerson

public class SmallPerson implements Parcelable{
    private int pid;
    private String pname;
    private int page;

    public SmallPerson() {
    }

    public SmallPerson(int pid, String pname, int page) {
        this.pid = pid;
        this.pname = pname;
        this.page = page;
    }

    public int getPid() {
        return pid;
    }

    public void setPid(int pid) {
        this.pid = pid;
    }

    public String getPname() {
        return pname;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeInt(pid);
        parcel.writeString(pname);
        parcel.writeInt(page);
    }


    public static final Parcelable.Creator<SmallPerson> CREATOR=new Parcelable.Creator<SmallPerson>(){

        @Override
        public SmallPerson createFromParcel(Parcel parcel) {
            SmallPerson smallPerson=new SmallPerson();
            smallPerson.setPid(parcel.readInt());
            smallPerson.setPname(parcel.readString());
            smallPerson.setPage(parcel.readInt());
            return smallPerson;
        }

        @Override
        public SmallPerson[] newArray(int i) {
            return new SmallPerson[i];
        }
    };

    @Override
    public String toString() {
        return "SmallPerson{" +
                "pid=" + pid +
                ", pname='" + pname + '\'' +
                ", page=" + page +
                '}';
    }
}


3.0:FastJson(需要导入fastjson-1.2.3.jar)

 BigPerson bigPerson=JSON.parseObject(stringBuffer.toString(),BigPerson.class);
                    Log.i("test",bigPerson.getList()+"");
                    List<SmallPerson> persons=bigPerson.getPersons();
                    for (SmallPerson person : persons) {
                        Log.i("test",person.toString());
                    }
然后记得配置权限
 <uses-permission android:name="android.permission.INTERNET"></uses-permission>


PS:就是可以增加用户体验,减少用户的流量,同时也增加了系统的API的解析速度最快




































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值