欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android解析json数据示例代码(三种方式)

程序员文章站 2023-08-16 22:01:49
json数据 复制代码 代码如下: [{"code":"110000","sheng":"11","di":"00","xian":"00","name":"北京市",...

json数据

复制代码 代码如下:

[{"code":"110000","sheng":"11","di":"00","xian":"00","name":"北京市","level":1},{"code":"659004","sheng":"65","di":"90","xian":"04","name":"五家渠市","level":3},{"code":"710000","sheng":"71","di":"00","xian":"00","name":"*省","level":1},{"code":"810000","sheng":"81","di":"00","xian":"00","name":"香港特别行政区","level":1},{"code":"820000","sheng":"82","di":"00","xian":"00","name":"澳门特别行政区","level":1}]

这里附上一个检查json数据格式是否正确的网站

三种解析方式android自带解析,gson解析,fastjson解析

1、android自带解析

 json_btn.setonclicklistener(new view.onclicklistener() {
      @override
      public void onclick(view v) {
        string s = getstring();
        log.d("txt",s);
        list<city> list = new arraylist<city>();
        try {
          jsonarray obj = new jsonarray(s);
          for(int i=0;i<obj.length();i++){
            jsonobject jsonobj = (jsonobject)obj.get(i);
            city city = new city();
            city.setcode(jsonobj.getstring("code"));
            city.setsheng(jsonobj.optstring("sheng"));
            city.setdi(jsonobj.optstring("di"));
            city.setxian(jsonobj.optstring("xian"));
            city.setname(jsonobj.optstring("name"));
            city.setlevel(jsonobj.optint("level"));
            log.d("txt",city.tostring());
            textview.append(city.tostring());
          }
        } catch (jsonexception e) {
          e.printstacktrace();
        }

      }
    });

先获取json数组,在解析jsonobject。

2、gson解析

gson_btn.setonclicklistener(new view.onclicklistener() {
      @override
      public void onclick(view v) {
        string s = getstring();
        jsonparser parser = new jsonparser();
        jsonarray jsonarray = parser.parse(s).getasjsonarray();
        gson gson = new gson();
        for (jsonelement obj:jsonarray){
          city city = gson.fromjson(obj,city.class);
          log.d("txt", city.tostring());
          textview.append(city.tostring());
        }


      }
    });

先获取json数组,再解析jsonobject。

3、fastjson

fastjson_btn.setonclicklistener(new view.onclicklistener() {
      @override
      public void onclick(view v) {
        string s = getstring();
        log.d("txt",s);
        list<city> lists = json.parsearray(s,city.class);

        for(city city:lists){
          textview.append(city.tostring());
          log.d("txt",city.tostring());
        }
      }
    });

 直接获取jsonarray解析list<bean>。

public static final object parse(string text); // 把json文本parse为jsonobject或者jsonarray 

   public static final jsonobject parseobject(string text); // 把json文本parse成jsonobject 

   public static final <t> t parseobject(string text, class<t> clazz); // 把json文本parse为javabean 

   public static final jsonarray parsearray(string text); // 把json文本parse成jsonarray

  public static final <t> list<t> parsearray(string text, class<t> clazz); //把json文本parse成javabean集合 

   public static final string tojsonstring(object object); // 将javabean序列化为json文本 

   public static final string tojsonstring(object object, boolean prettyformat); // 将javabean序列化为带格式的json文本 

public static final object tojson(object javaobject); 将javabean转换为jsonobject或者jsonarray(和上面方法的区别是返回值是不一样的)

三种解析方法,个人感觉fastjson使用起来还是很方便的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。