您的位置:首页 > 移动开发 > Android开发

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

2016-10-28 09:59 363 查看
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);

4000
}
});
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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: