做个Android网络编程的同学一定对于JSON解析一点都不陌生,因为现在我们通过手机向服务器请求资源,服务器给我们返回的数据资源一般都是以JSON格式返回,当然还有一些通过XML格式返回,相对JSON格式,XML格式的数据在处理时相对比较繁琐,并且Android为我们提供了两个解析JSON对象的类:JSONObject与JSONArray这两个对象可以很好的满足我们的需求,JSONArray对象可以以数组的形式将数据返回到手机,JSONObject对象则可以以对象的形式将数据为我们封装好返回,手机接收都这两种数据后,通过解析,可以很方便的使用,大大的方便了我们的开发学习。

  当然在使用JSONObject进行数据解析时,有两种方式,一种通过键值对的形式一个一个的取数据;另一种就是将JSONObject解析为具体的对象,然后通过对象的get、set方法进行数据的读取与操作,对于第一种方式,相信刚接触JSON解析的小童鞋都是这样干的,相对第一种方式,第二种方式更加的简单方便,下面我们就一起学习一下如何实现将JSONObject对象转化为具体的对象吧。

  因为今天我们要探讨的是关于JSONObject的解析,所以我就通过一个简单的对象创建--对象封装--对象解析--对象操作,为大家介绍一下如何进行JSONObject向具体对象的转化。
  首先我们的对象类(user):

public class User {

    private String id;
private String name;
private String from; public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
} @Override
public String toString() {
return "User [id=" + id + ",name=" + name + ",from=" + from +"]";
}
}

  这里我重写了对象的toString方法,这里一定要注意返回参数的格式:类名+'['+参数名+'='+参数+.....+']'

  下面就是我们的对象创建与解析了:

  1、JSONObject对象解析类:

//JSONObject解析类
public class JsonParseToObject {
public Object AllJsonParseToObject(String json, String packageAddress) {
Object parseObject = null;
try {
parseObject = JSON.parseObject(json, Class.forName(packageAddress));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return parseObject;
}
}

  2、JSON对象的创建与解析:

public class MainActivity extends Activity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView text = (TextView) findViewById(R.id.hw); //将我们的对象属性封装都JSONObject中
JSONObject jo = new JSONObject();
jo.put("id", "");
jo.put("name", "小了");
jo.put("from", "河南");
String str = jo.toString();
Toast.makeText(this, str, Toast.LENGTH_LONG).show(); //对JSONObject对象进行解析
User u = (User) new JsonParseToObject().AllJsonParseToObject(jo.toString(), "com.example.jsontoobject.User"); //判断JSONObject对象解析是否正确
if(u != null){
text.setText(jo.toString()+"\nid:"+u.getId()+";name:"+u.getName()+";from:"+u.getFrom());//进行对象操作
}else{
text.setText("User == null");
}
}
}

  布局文件很简单就是一个文本框,用来显示解析后的数据。

  

  好了到这里我们关于JSONObject解析的知识就为大家介绍完毕,没用过这种方式的小伙伴可以尝试一下,还是挺方便的,如果你有更好的方式,还望交流学习。

Android之JSON解析的更多相关文章

  1. Android项目--Json解析

    在过去的一段时间里,我希望做一个天气的应用,但是由于老版的天气接口已经不能用了.只能更新到2014年3月4日. 不过有些东西,哪来学习一下,也是可以的. 比如:http://m.weather.com ...

  2. Android 之json解析

    JSON(JavaScript Object Notation) 定义:字符串 键值对 解析方法有JSON,谷歌GSON,阿里巴巴FastJSON(推荐) 一种轻量级的数据交换格式,具有良好的可读和便 ...

  3. 浅谈Android项目----JSON解析(4种解析技术详解)

    json简介 1.概念:json全称是javaScript object Notation,是一种并轻量级的数据交换格式. 2.特点: 1.本质就是具有特定格式的字符串 2.json完全独立于编程语言 ...

  4. Android 中Json解析的几种框架(Gson、Jackson、FastJson、LoganSquare)使用与对比

    介绍 移动互联网产品与服务器端通信的数据格式,如果没有特殊的需求的话,一般选择使用JSON格式,Android系统也原生的提供了JSON解析的API,但是它的速度很慢,而且没有提供简介方便的接口来提高 ...

  5. android通用JSON解析

    ackage cn.com.pcgroup.<a href="http://lib.csdn.net/base/15" class="replace_word&qu ...

  6. Android okHttp网络请求之Json解析

    前言: 前面两篇文章介绍了基于okHttp的post.get请求,以及文件的上传下载,今天主要介绍一下如何和Json解析一起使用?如何才能提高开发效率? okHttp相关文章地址: Android o ...

  7. android json解析及简单例子

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  8. [Android]天气App 3 网络数据的请求和Json解析

      Android客户端开发,不仅仅是在Android端开发,还需要有相应的后台服务支持,否则的话,客户端的数据就只能放到本地自己做处理.我认为的原生态的App就是对应服务端的Client.他能像浏览 ...

  9. JSON解析之——Android

    JSON解析之——Android 一.google天气案例 之前xml学习中的google天气的例子非常形象,所以我们继续以google天气作为案例进行学习,下面是我从google官网下载下来的天气J ...

随机推荐

  1. [BZOJ1106][POI2007] Tet 立方体大作战

    Description 一个叫做立方体大作战的游戏风靡整个Byteotia.这个游戏的规则是相当复杂的,所以我们只介绍他的简单规则:给定玩家一个有2n个元素的栈,元素一个叠一个地放置.这些元素拥有n个 ...

  2. WebRTC通信流程

    WebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏览器的Web页面就可以实现音视频对聊功能.而且WebRTC项目是开源的,我们可以借助WebRTC源码快速构 ...

  3. SqlServer windowss身份登陆和sa身份登陆

    今天重新装了系统,但是计算机名变了,于是修改了计算机名,然后装了SQLSEVER,安装完成后登录,发现无论用WINDOWS身份还是SQLSERVER身份都登录不了 1.先说说sqlserver身份登录 ...

  4. 我的前端故事----优美的编辑器GitHub Atom

    很多前端的同学都在用sublime text,我之前也在使用,但是后来接触到了Atom,就被它的高颜值深深的吸引了~~不愧是GitHub的工程师哦~审美就是高  Atom 作为一个跨平台的编辑软件,安 ...

  5. nodejs 单元测试

    之前项目开发因为改进度,基本都是粗放式开发.为了提高代码质量,单元测试是必不可少的. 针对restful api ,用supertest 测试框架.针对nodejs,引入mocha 和should 可 ...

  6. JSON数据和对象

    在js中像数字类型.字符串类型.布尔类型这些都不能再被拆分,属于基本类型.与之相对有一种复杂类型:对象类型,它是本身由多个其他类型组合而成的. 创建对象有两种方法,一.new Object()创建一个 ...

  7. STM32之ADC+步骤小技巧(英文)

    神通广大的各位互联网的网友们.大家早上中午晚上好好好.今早起来很准时的收到了两条10086的扣月租的信息.心痛不已.怀着这心情.又开始了STM32的研究.早上做了计算机控制的PID实验,又让我想起了飞 ...

  8. Jquery.load() 使用

    调用load方法的完整格式是:load( url, [data], [callback] ) url:是指要导入文件的地址. data:可选参数:因为Load不仅仅可以导入静态的html文件,还可以导 ...

  9. perl学习之路1

    一切要从Hollo world开始 公司要用perl....啊, 不会只能自学了, 毕竟是公司啊, 不是学校...公司不学习就滚蛋了...惨惨惨 因为是学习嘛, 感觉开虚拟机比较麻烦所以直接用了个 瘟 ...

  10. <十三>JDBC_dbcp数据库连接池

    配置文件:jdbc.properties username=rootpassword=kkdriverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://1 ...