zoukankan      html  css  js  c++  java
  • Android之JSON解析

      做个Android网络编程的同学一定对于JSON解析一点都不陌生,因为现在我们通过手机向服务器请求资源,服务器给我们返回的数据资源一般都是以JSON格式返回,当然还有一些通过XML格式返回,相对JSON格式,XML格式的数据在处理时相对比较繁琐,并且Android为我们提供了两个解析JSON对象的类:JSONObject与JSONArray这两个对象可以很好的满足我们的需求,JSONArray对象可以以数组的形式将数据返回到手机,JSONObject对象则可以以对象的形式将数据为我们封装好返回,手机接收都这两种数据后,通过解析,可以很方便的使用,大大的方便了我们的开发学习。

      当然在使用JSONObject进行数据解析时,有两种方式,一种通过键值对的形式一个一个的取数据;另一种就是将JSONObject解析为具体的对象,然后通过对象的get、set方法进行数据的读取与操作,对于第一种方式,相信刚接触JSON解析的小童鞋都是这样干的,相对第一种方式,第二种方式更加的简单方便,下面我们就一起学习一下如何实现将JSONObject对象转化为具体的对象吧。

      因为今天我们要探讨的是关于JSONObject的解析,所以我就通过一个简单的对象创建--对象封装--对象解析--对象操作,为大家介绍一下如何进行JSONObject向具体对象的转化。
      首先我们的对象类(user):

    public class User {
        
        private String id;
        private String name;
        private String from;
        
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getFrom() {
            return from;
        }
        public void setFrom(String from) {
            this.from = from;
        }
        
        @Override
        public String toString() {
            return "User [id=" + id + ",name=" + name + ",from=" + from +"]";
        }
    }

      这里我重写了对象的toString方法,这里一定要注意返回参数的格式:类名+'['+参数名+'='+参数+.....+']'

      下面就是我们的对象创建与解析了:

      1、JSONObject对象解析类:

    //JSONObject解析类
    public class JsonParseToObject {
        public Object AllJsonParseToObject(String json, String packageAddress) {
            Object parseObject = null;
            try {
                parseObject = JSON.parseObject(json, Class.forName(packageAddress));
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            return parseObject;
        }    
    }

      2、JSON对象的创建与解析:

    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            TextView text = (TextView) findViewById(R.id.hw);
            
            //将我们的对象属性封装都JSONObject中
            JSONObject jo = new JSONObject();
            jo.put("id", "16");
            jo.put("name", "小了");
            jo.put("from", "河南");
            String str = jo.toString();
            Toast.makeText(this, str, Toast.LENGTH_LONG).show();
            
            //对JSONObject对象进行解析
            User u = (User) new JsonParseToObject().AllJsonParseToObject(jo.toString(), "com.example.jsontoobject.User");
            
            //判断JSONObject对象解析是否正确
            if(u != null){
                text.setText(jo.toString()+"
    id:"+u.getId()+";name:"+u.getName()+";from:"+u.getFrom());//进行对象操作
            }else{
                text.setText("User == null");
            }
        }
    }

      布局文件很简单就是一个文本框,用来显示解析后的数据。

      

      好了到这里我们关于JSONObject解析的知识就为大家介绍完毕,没用过这种方式的小伙伴可以尝试一下,还是挺方便的,如果你有更好的方式,还望交流学习。

  • 相关阅读:
    mustache.js 使用
    iscroll4 input textarea不能获得焦点问题
    object-fit?
    window.open()被拦截问题
    JSONP
    mouseenter和mouseover的区别
    前端页面卡顿-代码优化
    如何设置html中img宽高相同-css
    iscroll使用之页面卡顿问题
    iScroll的简单使用
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/5068844.html
Copyright © 2011-2022 走看看