原生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"/>

最新文章

  1. FPGA 开发笔记 点滴
  2. CSS导航的魔力——源自温谦老师《CSS彻底研究设计》
  3. monkeyrunner之夜神模拟器的安装与使用(二)
  4. firstchild.data与childNodes[0].nodeValue意思(转)
  5. 转:Java NIO系列教程(五) 通道之间的数据传输
  6. FineUI疑难杂症
  7. 【JS】js获得下拉列表选中项的值和id
  8. HTML5学习(十一)---服务器发送事件
  9. 1005 Number Sequence(HDU)
  10. BZOJ 2819: Nim( nim + DFS序 + 树状数组 + LCA )
  11. (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)
  12. Android开发之异步具体解释(二)之AsyncTask
  13. ckediter
  14. HTML基本结构与标签总结整理篇
  15. 201621123062《java程序设计》第13周作业总结
  16. JAVA进阶16
  17. canvas如何自适应屏幕大小
  18. 教你快速录制gif动图
  19. Ecplise 快捷键笔记
  20. tick 能见度

热门文章

  1. Dev Label显示不同颜色字体
  2. 剑指offer十四之链表中倒数第k个结点
  3. (转载)es进行聚合操作时提示Fielddata is disabled on text fields by default
  4. 面试基础知识集合(python、计算机网络、操作系统、数据结构、数据库等杂记)
  5. redis的高级事务CAS(乐观锁)
  6. 独立部署GlusterFS+Heketi实现Kubernetes共享存储
  7. Intellij IDEA 环境配置与使用
  8. Android get current Locale, not default
  9. Python学习--23 内建模块及第三方库
  10. 关于LVS+Nginx为什么会被同时使用的思考