当前位置: 移动技术网 > IT编程>移动开发>Android > android原生JSON解析实例

android原生JSON解析实例

2019年07月24日  | 移动技术网IT编程  | 我要评论

枭龙科技,裴静花,这个杀手不眨眼2

我们在android项目开发的时候,经常要对json进行解析,很多朋友在寻找相关的实例,小编整理详细的相关分析说明,一起来看下。

jsonobject:json数据封装对象

jsonarray:json数据封装数组

<?xml version="1.0" encoding="utf-8"?>
<linearlayout
 android:orientation="vertical"
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context="net.bwie.jsonobject.mainactivity">

 <button
  android:id="@+id/read_file_btn"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="读取文件中的json数据"/>

 <button
  android:id="@+id/parse_btn"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="解析json数据"/>

 <textview
  android:id="@+id/result_tv"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="hello world!"/>

</linearlayout>

bean:

package net.bwie.jsonobject;

import java.util.list;

public class shoppingbean {

 private string msg;
 private infobean info;

 public string getmsg() {
  return msg;
 }

 public void setmsg(string msg) {
  this.msg = msg;
 }

 public infobean getinfo() {
  return info;
 }

 public void setinfo(infobean info) {
  this.info = info;
 }

 @override
 public string tostring() {
  return "shoppingbean{" +
    "msg='" + msg + '\'' +
    ", info=" + info +
    '}';
 }

 public static class infobean {

  private int cat_id;
  private list<goodsbean> good;
  private boolean url;

  public int getcat_id() {
   return cat_id;
  }

  public void setcat_id(int cat_id) {
   this.cat_id = cat_id;
  }

  public list<goodsbean> getgood() {
   return good;
  }

  public void setgood(list<goodsbean> good) {
   this.good = good;
  }

  public boolean isurl() {
   return url;
  }

  public void seturl(boolean url) {
   this.url = url;
  }

  @override
  public string tostring() {
   return "infobean{" +
     "cat_id=" + cat_id +
     ", good=" + good +
     ", url=" + url +
     '}';
  }

  public static class goodsbean {

   private long add_time;
   private string colorcode;
   private string currency_price;
   private string description;
   private string goods_id;
   private string goods_name;
   private string thumb;

   public long getadd_time() {
    return add_time;
   }

   public void setadd_time(long add_time) {
    this.add_time = add_time;
   }

   public string getcolorcode() {
    return colorcode;
   }

   public void setcolorcode(string colorcode) {
    this.colorcode = colorcode;
   }

   public string getcurrency_price() {
    return currency_price;
   }

   public void setcurrency_price(string currency_price) {
    this.currency_price = currency_price;
   }

   public string getdescription() {
    return description;
   }

   public void setdescription(string description) {
    this.description = description;
   }

   public string getgoods_id() {
    return goods_id;
   }

   public void setgoods_id(string goods_id) {
    this.goods_id = goods_id;
   }

   public string getgoods_name() {
    return goods_name;
   }

   public void setgoods_name(string goods_name) {
    this.goods_name = goods_name;
   }

   public string getthumb() {
    return thumb;
   }

   public void setthumb(string thumb) {
    this.thumb = thumb;
   }

   @override
   public string tostring() {
    return "goodsbean{" +
      "add_time=" + add_time +
      ", colorcode='" + colorcode + '\'' +
      ", currency_price='" + currency_price + '\'' +
      ", description='" + description + '\'' +
      ", goods_id='" + goods_id + '\'' +
      ", goods_name='" + goods_name + '\'' +
      ", thumb='" + thumb + '\'' +
      '}';
   }
  }

 }

}

activity:

/**
 * 1、将json文件存在外部存储中,使用io流读取文件中的数据
 * 2、使用jsonobject解析读取出来的数据
 */
public class mainactivity extends appcompatactivity implements view.onclicklistener {

 private string mjson = "";

 protected button mreadfilebtn;
 protected button mparsebtn;
 protected textview mresulttv;

 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  super.setcontentview(r.layout.activity_main);
  initview();
 }

 @override
 public void onclick(view view) {
  if (view.getid() == r.id.read_file_btn) {
   readfile();
  } else if (view.getid() == r.id.parse_btn) {
   shoppingbean shopping = parsejson();
   log.d("1507", "" + shopping);
  }
 }

 // 解析json数据
 // 遇到{}就创建jsonobject,遇到[]就创建jsonarray
 private shoppingbean parsejson() {
  shoppingbean shopping = null;
  try {
   jsonobject rootobject = new jsonobject(mjson);
   shopping = new shoppingbean();

   string msg = rootobject.getstring("msg");
   shopping.setmsg(msg);

   jsonobject infoobject = rootobject.getjsonobject("info");
   shoppingbean.infobean info = new shoppingbean.infobean();
   shopping.setinfo(info);

   int catid = infoobject.getint("cat_id");
   info.setcat_id(catid);

   boolean url = infoobject.getboolean("url");
   info.seturl(url);

   jsonarray goodsarray = infoobject.getjsonarray("goods");
   list<shoppingbean.infobean.goodsbean> goodslist = new arraylist<>();
   info.setgood(goodslist);

   for (int i = 0; i < goodsarray.length(); i++) {
    jsonobject goodsobject = goodsarray.getjsonobject(i);
    shoppingbean.infobean.goodsbean goods = new shoppingbean.infobean.goodsbean();

    long addtime = goodsobject.getlong("add_time");
    goods.setadd_time(addtime);

    string colorcode = goodsobject.getstring("colorcode");
    goods.setcolorcode(colorcode);

    string currencyprice = goodsobject.getstring("currency_price");
    goods.setcurrency_price(currencyprice);

    string description = goodsobject.getstring("description");
    goods.setdescription(description);

    string goodsname = goodsobject.getstring("goods_name");
    goods.setgoods_name(goodsname);

    string thumb = goodsobject.getstring("thumb");
    goods.setthumb(thumb);

    goodslist.add(goods);
   }

  } catch (exception e) {
   e.printstacktrace();
  }

  return shopping;

 }

 // 读取文件中的json数据
 private void readfile() {
  // 根目录
  // environment.getexternalstoragedirectory()

  // 外部存储公共路径,例如:dcim,downloads等系统提供的文件夹
//  environment.getexternalstoragepublicdirectory(类型)

  // 外部存储私有路径:android文件夹
//  context.getexternalfilesdir(null)

  // downloads文件夹路径
  string filepath = environment
    .getexternalstoragepublicdirectory(environment.directory_downloads)
    .getabsolutepath();
  string filename = "json.txt";

  file file = new file(filepath, filename);

  // 文件字符输入流
  // 字缓符输入冲流
  bufferedreader br = null;
  try {
   br = new bufferedreader(new filereader(file));
   string line = new string();
   while ((line = br.readline()) != null) {
    mjson += line;
   }
   if (mjson != null) {
    mresulttv.settext(mjson);
   }
  } catch (exception e) {
   e.printstacktrace();
  } finally {
   try {
    br.close();
   } catch (ioexception e) {
    e.printstacktrace();
   }
  }
 }

 private void initview() {
  mreadfilebtn = (button) findviewbyid(r.id.read_file_btn);
  mreadfilebtn.setonclicklistener(mainactivity.this);
  mparsebtn = (button) findviewbyid(r.id.parse_btn);
  mparsebtn.setonclicklistener(mainactivity.this);
  mresulttv = (textview) findviewbyid(r.id.result_tv);
 }
}

权限:

<uses-permission android:name="android.permission.write_external_storage"/>

如果上面说的还有不明白的,大家可以在下方留言讨论。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网