android原生JSON解析实例

我们在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"/>

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

您可能感兴趣的文章:

  • Android编程简单解析JSON格式数据的方法示例
  • Android使用OKHTTP解析JSON数据的实例代码
  • android JSON解析数据 android解析天气预报
  • Android 中对JSON数据解析实例代码
  • Android解析json数据示例代码(三种方式)
  • Android编程实现根据经纬度查询地址并对获取的json数据进行解析的方法
  • Android之解析JSON数据示例(android原生态,FastJson,Gson)
  • Android json数据解析详解及实例代码
  • Android系列---JSON数据解析的实例
  • Android利用Gson解析嵌套多层的Json的简单方法
  • Android M(6.x)使用OkHttp包解析和发送JSON请求的教程
  • Android解析JSON数据的方法分析
  • Android json解析及简单例子
  • android解析JSON数据
  • Android中gson、jsonobject解析JSON的方法详解
  • Android解析json数组对象的方法及Apply和数组的三个技巧
  • Android随手笔记44之JSON数据解析
  • Android学习笔记45之gson解析json
(0)

相关推荐

  • Android json数据解析详解及实例代码

     Android json数据解析详解 移动开发经常要与服务器数据交互,也常使用json数据格式,那就说说Android json解析. 1.最简单json格式解析如下: //解析json ry { JSONTokener jsonParser = new JSONTokener(strResult); JSONObject jsonObj = (JSONObject) jsonParser.nextValue(); String strsportsTitle = jsonObj.getStri

  • Android中gson、jsonobject解析JSON的方法详解

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. JSON对象: JSON中对象(Object)以"{"开始, 以"}"结束. 对象中的每一个item都是一个key-value对, 表现为"key:value"的形式, ke

  • Android json解析及简单例子

    一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. – Json.org JSON Vs XML 1.JSON和XML的数据可读性基本相同 2.JSON和XML同样拥有丰富的解析手段 3.JSON相对于XML来讲,数据的体积小 4.JSON与JavaScript的交互更加方便 5.JSON对数

  • Android编程实现根据经纬度查询地址并对获取的json数据进行解析的方法

    本文实例讲述了Android编程实现根据经纬度查询地址并对获取的json数据进行解析的方法.分享给大家供大家参考,具体如下: 第一步:根据指定的URL从google 服务器上获得包含地址的json格式的数据(其还提供xml格式的,但json解析效率比xml高) private static StringBuffer getJSONData(String urlPath){ try { URL url = new URL(urlPath); HttpURLConnection httpURLCon

  • Android解析JSON数据的方法分析

    本文实例讲述了Android解析JSON数据的方法.分享给大家供大家参考,具体如下: JSON作为一种"轻量"的数据结构传递数据,在JS中有广泛的应用 Google公司对JSON的解析提供了gson.jar这个包,它不依赖于其他任何JAR包:自从Android3.0中已经合入了该解析器的功能,但之前的版本是没有的. findViewById(R.id.parseBtn).setOnClickListener(new OnClickListener(){ @Override public

  • Android学习笔记45之gson解析json

    JSON即JavaScript Object Natation, 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. JSON对象: JSON中对象(Object)以"{"开始, 以"}"结束. 对象中的每一个item都是一个key-value对, 表现为"key:value"的形式, key-value对之间使用逗号分隔. 如:{"name":"coolxing

  • Android 中对JSON数据解析实例代码

    Android 中对JSON数据解析 在Android的网络编程中,JSON是比XML使用更为广泛的数据传输机制.在许多的http网络请求或接口调用中,返回的很多都是JSON.所以学会解析JSON是学会Android的基本技能. 简单介绍下JSON,JSON是轻量级的文本数据交换格式,独立于语言和平台.比XML更小,更快,更易解析.JSON是用键值对来保存数据的.JSON保存的值可以是数字.字符串.布尔值.数组和对象. 废话少说,直接上代码.下面对以下JOSN进行解析: { "language&

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

    Json数据 复制代码 代码如下: [{"code":"110000","sheng":"11","di":"00","xian":"00","name":"北京市","level":1},{"code":"659004","sheng&q

  • Android解析json数组对象的方法及Apply和数组的三个技巧

    json是种常用的数据传输格式,在android开发中,如何借助java语言实现对json数组对象的解析呢,请参阅下面的关键代码: import org.json.JSONArray; import org.json.JSONObject; //jsonData的数据格式:[{ "id": "27JpL~jd99w9nM01c000qc", "version": "abc" },{ "id": "

  • Android使用OKHTTP解析JSON数据的实例代码

    为了代码重用,我们首先封装一个类.这个类是HttpUtil HttpUtil.java package com.example.asus.networktest; import okhttp3.OkHttpClient; import okhttp3.Request; public class HttpUtil { public static void sendOkHttpRequest(final String address, final okhttp3.Callback callback)

  • Android利用Gson解析嵌套多层的Json的简单方法

    首先先讲一个比较简单点的例子(最简单的我就不讲啦,网上很多),帮助新手理解Gson的使用方法: 比如我们要解析一个下面这种的Json: String json = {"a":"100", "b":[{"b1":"b_value1","b2":"b_value2"}, {"b1":"b_value1","b2"

  • android JSON解析数据 android解析天气预报

    概要 笔者近期做到对天气预报JSON数据解析,在此小记. 天气预报接口:http://wthrcdn.etouch.cn/weather_mini?citykey=101200101 JSON数据如下: { "desc": "OK", "status": 1000, "data": { "wendu": "14", "ganmao": "天气转凉,空气湿度较

  • Android编程简单解析JSON格式数据的方法示例

    本文实例讲述了Android编程简单解析JSON格式数据的方法.分享给大家供大家参考,具体如下: 比起XML,JSON主要优势在于它的体积更小,在网络上传输的时候可以更省流量.但缺点在于,它的语义性较差,显示不如XML直观. JSON格式 : { "name_A" : "value_A","name_B" : "value_B" } 表示: name_A = value_A; name_B = value_B; 我将对下面的J

  • android解析JSON数据

    JSONObject的使用 一. JSON对象的使用: String content = "{'username': 'linux', 'password': '123456'}"; JSONObject jsonObject = new JSONObject(content); String username = jsonObject.getString("username"); String password = jsonObject.getString(&qu

  • Android M(6.x)使用OkHttp包解析和发送JSON请求的教程

    关于Android 6.0 Android老版本网络请求: 1,HttpUrlConnection 2,Apache Http Client Android6.0版本网络请求: 1,HttpUrlConnection 2,OkHttp Android6.0版本废弃了老的网络请求,那么它的优势是什么呢? 1,支持SPDY,共享同一个Socket来处理同一个服务器的所有请求 2,如果SPDY不可用,则通过连接池来减少请求延时 3,无缝的支持GZIP来减少数据流量 4,缓存响应数据来减少重复的网络请求

  • Android系列---JSON数据解析的实例

    上篇随笔详细介绍了三种解析服务器端传过来的xml数据格式,而对于服务器端来说,返回给客户端的数据格式一般分为html.xml和json这三种格式,那么本篇随笔将讲解一下json这个知识点,包括如何通过json-lib和gson这两个json解析库来对解析我们的json数据,以及如何在我们的Android客户端解析来自服务器端的json数据,并更新到UI当中. 一.什么是json json(Javascript Object Notation)是一种轻量级的数据交换格式,相比于xml这种数据交换格

  • Android之解析JSON数据示例(android原生态,FastJson,Gson)

    1.json网页代码 <%@ page language="java" contentType="text/plain; charset=UTF-8" pageEncoding="UTF-8"%><%@page isELIgnored="false" %>${fqs } 2.json数据网页效果图 3.Android代码 布局 <?xml version="1.0" encod

  • Android随手笔记44之JSON数据解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android开发中,如何在服务器端创建JSON数据,以及如何在Android客户端对JSON数据进行解析. 1.JSON数据结构 在JSON中有两种数据结构:对象和数组. 1.1对象 在JSON中,一个对象以"{"(左括号)开始,"}"(右括号)结束.每个"名称"

随机推荐