后台返回的json前端如何解析

比如后台返回的数据是这样的
{
“success”: true,
“msg”: “操作成功”,
“obj”: [
{
“position”: 1,
“name”: “小明”,
“number”: “10001”,
“school”: “中大”
},
{
“position”: 2,
“name”: “小强”,
“number”: “10021”,
“school”: “华师”
}
{
“position”: 3,
“name”: “晓华”,
“number”: “10032”,
“school”: “北大”
}
],
“arrayAjaxJson”: {},
“sql”: null,
“type”: null,
“state”: “success”,
“stateCode”: “00”
}

向用户展示的效果大致是这样的:
这里写图片描述

首先定义一个TableActivity

public class TableActivity extends Activity{

private ListView itemList;
private TableItemAdapter adapter;
private List<Student> list = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //此处的布局就如上图展示,就不在次列出来了
        setContentView(R.layout.activity_table);
        //userName,userId假设数据不做定义
        loadlistItemData(userId,userName);
        adapter = new TableItemAdapter();
        itemList.setAdapter(adapter);
    }

    //假设要传参  userName,userId
    private void loadlistItemData(int userId,String userName){
        Map map = new HashMap();
        map.put("userId",userId);
        map.put("userName"userName);
        //url 请求地址
        Http.sessionPost(this,url,map,new JsonCallBack() {
            @Override
            protected void onDataSuccess(JSONObject t) {
                list.clear();
                try{
                     JSONArray array = t.getJSONArray("obj");
                     Student item;
                     for(int i=0;i<array.length();i++){
                        JSONObject jobj = array.getJSONObject(i);
                        item = new Student();
                        item.position = jobj.optInt("position");
                        item.name = jobj.optString("name");
                        item.number = jobj.optString("number");
                        item.school = jobj.optString("school");
                        list.add(item);
                     }
                      adapter.notifyDataSetChanged();
                }catch(JSONException e){
                    e.printStackTrace();
                }
            }
        });
    }

    class TableItemAdapter extends BaseAdapter{
         @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            return list.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }


        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
                TableItemView tableItemView = null;//相当于ViewHolder holder = null;
                if(convertView == null){
                    //此处布局看面展示的图,就不写了
                    convertView = View.inflate(TableActivity.this,R.layout.item);
                    tableItemView = new TableItemView ((ViewGroup) convertView);
                    convertView.setTag(tableItemView);
                }else{
                    tableItemView = (TableItemView )convertView.getTag();
                }
                Student items = list.get(position);
                tableItemView.tableItemAdapter = TableActivity.this.adapter;
                tableItemView.refresh(items);
                return convertView;
        }
    }

 //假如有一些点击事件,可以在ViewHolder中写,方便调用
    class TableItemView {
        TextView position;
        TextView name;
        TextView number;
        TextView school;
        Student item;
        TableItemAdapter tableItemAdapter;

        public TableItemView (ViewGroup vg){
            position = (TextView) vg.findViewById(R.id.position);
            name = (TextView) vg.findViewById(R.id.name);
            number = (TextView) vg.findViewById(R.id.number);
            school = (TextView) vg.findViewById(R.id.school);
        }

        public void refresh(Student item){
            this.item = item;
            position.setText(item.position+"");
            name.setText(item.name);
            number.setText(item.number);
            school.setText(item.school);
        }
    }


    //定义一个实体类,与返回数据一致
    class Student implements Serializable{
        private int position;//排名
        private Stirng name;//姓名
        private String number;//学号
        private String school;//学校
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值