Android通过类对象的方式实现JSON数据的解析
1.通过主Activity的Button按钮实现数据的解析
public class MainActivity extends Activity {
//定义一个包含Json格式的字符对象
private String Data="{\"name\":\"小张\",\"age\":25,\"sex\":\"男\"};{\"name\":\"小李子\",\"age\":41,\"sex\":\"女\"};" +
"{\"name\":\"倩倩\",\"age\":15,\"sex\":\"女\"}";
protected void onCreate(Bundle savedInstanceState ) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); Button button=(Button) super.findViewById(R.id.button);
button.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
new JsonUtils(Data);
}
});
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }
2.解析json数据的业务类
public class JsonUtils { public JsonUtils(String jsonData)
{
//创建一个google的Gson对象
Gson gson=new Gson();
//根据主Activity传来的数据将数据拆分成Json格式的字符数组对象
//没拆分之前是一个整体"{\"name\":\"小张\",\"age\":25,\"sex\":\"男\"};{\"name\":\"小李子\",\"age\":41,\"sex\":\"女\"};"
//拆分之后是一个个单独的字符串对象格式正好符合JSON格式的标准"{\"name\":\"小张\",\"age\":25,\"sex\":\"男\"}" ; {\"name\":\"小李子\",\"age\":41,\"sex\":\"女\"}
String[] users=jsonData.split(";"); for(int i=0;i<users.length;i++) {
//创建一个User类对象,第一个参数是json格式的数据,第二个参数是实现数据解析的类对象
User user=gson.fromJson(users[i], User.class);
System.out.println(user.getName()+","+user.getAge()+","+user.getSex());
} 上面的方法还可以这样写:
2
但是强调一点是在主Activity的Data的数据是Json格式: "[{\"name\":\"小张\",\"age\":25,\"sex\":\"男\"},{\"name\":\"小李子\",\"age\":41,\"sex\":\"女\"},{\"name\":\"倩倩\",\"age\":15,\"sex\":\"女\"}]"
而不再是字符串格式
"{\"name\":\"小张\",\"age\":25,\"sex\":\"男\"};{\"name\":\"小李子\",\"age\":41,\"sex\":\"女\"};{\"name\":\"倩倩\",\"age\":15,\"sex\":\"女\"}
" 这样的,注意观察我用红色标注的地方,上面的是json格式的数据是以[(中括号)开始的,下面的字符串是以{(大括号)开始的,而且每一组
({\"name\":\"小张\",\"age\":25,\"sex\":\"男\"}这样的称为一组数据)的结尾是不同的一个是逗号,一个是分号注意这些细节
Gson gson=new Gson(); Type listpyte=new TypeToken< LinkedList<User> >(){}.getType();
LinkedList<User> users=gson.fromJson(jsonData, listpyte); for(Iterator<User> iterator=users.iterator();iterator.hasNext();)
{
User user=(User) iterator.next();
System.out.println(user.getName()+","+user.getAge()+","+user.getSex());
}
} }
3.实现数据解析的类对象也就是这里的User类
public class User
{
private String name;
private int age;
private String sex;
public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
} public int getAge()
{
return age;
} public void setAge(int age)
{
this.age = age;
} public String getSex()
{
return sex;
} public void setSex(String sex)
{
this.sex = sex;
}
}
4.运行之前要把Google的Gson-xxx.jar文件拷到项目中的libs文件夹下;这样之后才可以正常的运行
Android通过类对象的方式实现JSON数据的解析的更多相关文章
- javascript中 json数据的解析与序列化
首先明确一下概念: json格式数据本质上就是字符串: js对象:JavaScript 中的几乎所有事务都是对象:字符串.数字.数组.日期.函数,等等. json数据的解析: 就是把后端传来的json ...
- Android 学习笔记之Volley(七)实现Json数据加载和解析...
学习内容: 1.使用Volley实现异步加载Json数据... Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...
- Android 之 json数据的解析(jsonReader)
json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...
- Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
Android中使用HttpURLConnection实现GET POST JSON数据与下载图片 Android6.0中把Apache HTTP Client全部的包与类都标记为deprecated ...
- J2EE Web开发入门—通过action是以传统方式返回JSON数据
关键字:maven.m2eclipse.JSON.Struts2.Log4j2.tomcat.jdk7.Config Browser Plugin Created by Bob 20131031 l ...
- 前端ajax用post方式提交json数据给后端时,网络报错 415
项目框架:spring+springmvc+mybatis 问题描述:前端ajax用post方式提交json数据给后端时,网络报错 415 前端异常信息:Failed to load resource ...
- HttpURLConnection从网上获取Json数据并解析详解
HttpURLConnection从网上获取Json数据并解析 1.HttpURLConnection请求数据的步骤 (1)构造一个URL接口地址: URL url = new URL("h ...
- iOS开发网络篇—JSON数据的解析
iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...
- android客户端从服务器端获取json数据并解析的实现代码
今天总结一下android客户端从服务器端获取json数据的实现代码,需要的朋友可以参考下 首先客户端从服务器端获取json数据 1.利用HttpUrlConnection /** * 从指定的U ...
随机推荐
- Oracle 左连接、右连接、全外连接、(+)号作用、inner join(等值连接) (转载)
Oracle 外连接 (1)左外连接 (左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 外连接(Outer Join) oute ...
- modifytime是一个神奇的column name----这边文章是错的totally,因为我的实验不彻底。timestamp属性很神奇,头一个timestamp,会自动的成DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
在mysql里边modifytime是一个神奇的column name,试一下. 请执行sql语句 CREATE TABLE `test_time` ( `modifytime` timestamp ...
- 第八篇、SVN在Mac上使用
Mac自带svn软件 1.创建目录 svn-repository/source-code 2.svnadmin create /Users/liaokailin/svn-repository/sour ...
- topcoder算法练习3
SRM144 DIV1 1100 point Problem Statement NOTE: There are images in the examples section of this ...
- eclipse中show whitespace characters显示代码空格,TAB,回车 导致代码乱恶心
Eclipse中show whitespace characters显示回车.空格符. 取消此功能的第二种方式:
- [转]我的第一个WCF
1:首先新建一个解决方案 2:右击解决方案添加一个控制台程序 3:对着新建好的控制台程序右击添加wcf服务 最后的结果: 有3个文件 app.config Iwcf_server.cs wcf_se ...
- C#之移动无标题栏窗体功能的实现!...
为实现移动无标题栏窗体的功能,我从网上寻找.整理了以下资料,以备不时之需: 该方法适用于有标题栏和无标题栏窗体,适用于窗体内控件,当然 Form 也不例外, 只须添加 MouseDown.MouseM ...
- truncate 命令删除恢复
truncate命令可以一次性删除当前表中所有记录并且不留任何日志,同时这个表的ID就自动初化从1开始,今天我就来给大家尝试一个利用truncate清除记录之后恢复过程. 实际线上的场景比较复杂,当时 ...
- 百度编辑器ueditor如何配置
完全版: 1.加载 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" ...
- python【第九篇】多线程、多进程
内容提要 paramiko模块 进程.与线程区别 python GIL全局解释器锁 多线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生 ...