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

JSONObject:JSON数据封装对象

JSONArray:JSON数据封装数组

<?xml version="1.0" encoding="utf-8"?> 

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 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 getGood() {   return good;  }  public void setGood(List 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 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); }}

权限:

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

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  4. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  5. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  6. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  7. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  8. 安卓activity 设置Activity背景色为透明
  9. LeanCanary——消除Android中的内存泄露

随机推荐

  1. Android通过URI获取文件路径
  2. Android(安卓)Developers:ProGuard
  3. Android设计模式系列--模板方法模式
  4. Android(安卓)Q(10.0)版本新特性和兼容性适
  5. 推荐一本Android开发入门书籍
  6. Android新的网络请求框架volley源码解释
  7. android 支付宝
  8. Android(安卓)之 语言 国际化
  9. 使用 Memory Profiler查看Java堆和内存分
  10. Android常用的一些服务demo源码