Android自带json和Gson数据格式解析示列

本文介绍了一种使用Android平台下的Volley库获取JSON数据的方法,并通过Gson进行数据解析的过程。展示了如何设置回调处理返回的JSON数据,包括错误码、原因及一系列书籍信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 DataOfJson dataOfJson = new DataOfJson(getApplicationContext(),url, Request.Method.POST);
         dataOfJson.setJsonVolleyCallBack(new JsonVolleyCallBack() {
            @Override
            public void getJsonFromVolley(JSONObject jsonObject) {
                try {
                    Log.i("reason",jsonObject.getString("reason"));
                    tv.setText(jsonObject.getString("reason"));
                    Log.i("error_code", String.valueOf(jsonObject.get("error_code")));
                    tv.append(String.valueOf(jsonObject.get("error_code")));
                    JSONObject object1 = (JSONObject) jsonObject.get("result");
                    JSONArray array = object1.getJSONArray("data");

                    for (int i = 0; i < array.length();i++){
                        JSONObject object = array.getJSONObject(i);
                        Log.i("result:", object.getString("title"));
                        tv.append(object.getString("title"));
                        Log.i("result:", String.valueOf(object.get("code")));
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
            @Override
            public void putJsonFromVolley(Map<String, String> map) {

            }
        });
        dataOfJson.JsonFromNet();


json数据:

{
    "error_code": 0,
    "reason": "Success",
    "result": {
        "data": [
            {
                "title": "枪·血玫瑰·Necromancer",
                "code": 20595
            },
            {
                "title": "热血传奇之绝对计划",
                "code": 20596
            },
            {
                "title": "人鬼情",
                "code": 20597
            },
            {
                "title": "人妖孽缘",
                "code": 20598
            },
            {
                "title": "热血传奇之傲气凌云",
                "code": 20599
            },
            {
                "title": "人品天下",
                "code": 20600
            },
            {
                "title": "日月神祭师",
                "code": 20601
            },
            {
                "title": "人魔世界",
                "code": 20602
            },
            {
                "title": "燃烧战役",
                "code": 20603
            },
            {
                "title": "人妖传说",
                "code": 20604
            },
            {
                "title": "任性少年",
                "code": 20605
            },
            {
                "title": "任风随柳意飘扬",
                "code": 20606
            },
            {
                "title": "上辈子欠你的爱",
                "code": 20607
            },
            {
                "title": "首富未成年",
                "code": 20608
            },
            {
                "title": "三国志乱",
                "code": 20609
            },
            {
                "title": "圣轩",
                "code": 20610
            },
            {
                "title": "谁是李世民",
                "code": 20611
            },
            {
                "title": "生化危机之终期黑城",
                "code": 20612
            },
            {
                "title": "树在红尘",
                "code": 20613
            },
            {
                "title": "狩猎园",
                "code": 20614
            },
            {
                "title": "兽族世界的佣兵",
                "code": 20615
            },
            {
                "title": "兽族的荣耀",
                "code": 20616
            },
            {
                "title": "兽族",
                "code": 20617
            },
            {
                "title": "死神-虚之死神",
                "code": 20618
            },
            {
                "title": "丧神",
                "code": 20619
            },
            {
                "title": "世界",
                "code": 20620
            },
            {
                "title": "三界传说",
                "code": 20621
            },
            {
                "title": "神道侠医之妙手回春",
                "code": 20622
            },
            {
                "title": "神兵传",
                "code": 20623
            },
            {
                "title": "烁金",
                "code": 20624
            },
            {
                "title": "蜀山问天书",
                "code": 20625
            },
            {
                "title": "神珠子之成仙传奇",
                "code": 20626
            },
            {
                "title": "那时花儿开",
                "code": 20627
            },
            {
                "title": "光之继承者",
                "code": 20628
            },
            {
                "title": "水之旅",
                "code": 20629
            },
            {
                "title": "神冥劫",
                "code": 20631
            },
            {
                "title": "随机英雄",
                "code": 20632
            },
            {
                "title": "死亡倒计时",
                "code": 20633
            },
            {
                "title": "杀手必读手册",
                "code": 20634
            },
            {
                "title": "紫狐女儿",
                "code": 20635
            },
            {
                "title": "仙凡寻",
                "code": 20636
            },
            {
                "title": "兽界风云",
                "code": 20637
            },
            {
                "title": "食为天",
                "code": 20638
            },
            {
                "title": "神之启世录",
                "code": 20639
            },
            {
                "title": "杀戮游戏",
                "code": 20640
            },
            {
                "title": "网游之书生传奇",
                "code": 20641
            },
            {
                "title": "时空交错间的爱情",
                "code": 20642
            },
            {
                "title": "神雕之大宋皇朝",
                "code": 20643
            },
            {
                "title": "仙兵",
                "code": 20644
            },
            {
                "title": "时空流浪者",
                "code": 20645
            }
        ]
    }
}

json数据封装类:

package com.example.cuboo.myapplication.DataFromNetApi;

import android.content.Context;
import android.util.Log;
import android.view.View;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

/**
 * Created by cuboo on 2016/10/26.
 * 从网络获取Json数据
 */

public class DataOfJson {
    private Context context;
    private String url;
    private RequestQueue mQueue;
    private int method;
    private JsonVolleyCallBack jsonVolleyCallBack;

    public void setJsonVolleyCallBack(JsonVolleyCallBack jsonVolleyCallBack) {
        this.jsonVolleyCallBack = jsonVolleyCallBack;
    }

    public DataOfJson(Context context, String url, int method){
        this.context = context;
        this.url = url;
        this.method = method;
        mQueue = Volley.newRequestQueue(context);

    }
    public DataOfJson(View view,String url,int method){
        this(view.getContext(),url,method);
    }


    public void JsonFromNet() {
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(method,url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject jsonObject) {
                        if (jsonVolleyCallBack != null){
                            jsonVolleyCallBack.getJsonFromVolley(jsonObject);
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Log.e("TAG", volleyError.getMessage(), volleyError);
            }
        });
        mQueue.add(jsonObjectRequest);
    }


    public void JsonFromAndPutNet() {
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(method, url, null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject jsonObject) {
                        if (jsonVolleyCallBack != null){
                            jsonVolleyCallBack.getJsonFromVolley(jsonObject);
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                Log.e("TAG", volleyError.getMessage(), volleyError);
            }
        }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> map = new HashMap<String,String>();
                if (jsonVolleyCallBack != null){
                    jsonVolleyCallBack.putJsonFromVolley(map);
                }
                return map;
            }
        };
        mQueue.add(jsonObjectRequest);
    }
}


Gson解析数据:

   DataOfJson dataOfJson = new DataOfJson(getApplicationContext(),url, Request.Method.POST);
         dataOfJson.setJsonVolleyCallBack(new JsonVolleyCallBack() {
            @Override
            public void getJsonFromVolley(JSONObject jsonObject) {
                Gson gson = new Gson();
                Rootss rootss = gson.fromJson(String.valueOf(jsonObject),Rootss.class);
                Log.i("reason",rootss.getReason());
                Log.i("error_code", String.valueOf(rootss.getError_code()));
                Result result = rootss.getResult();
                Log.i("result", String.valueOf(result.getData().size()));
                for (book b:result.getData()){
                    Log.i("title", b.getTitle());
                    Log.i("code", String.valueOf(b.getCode()));
                }
            }
            @Override
            public void putJsonFromVolley(Map<String, String> map) {

            }
        });
        dataOfJson.JsonFromNet();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值