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 ...
随机推荐
- C#超时处理(转载)
/// <summary> /// 超时处理 /// /// /// </summary> public class TimeoutChecker ...
- Eclipse中点击小猫提示Tomcat settings should be set in Tomcat Preference Page
1.window->preference->tomcat->tomcat-version选择自己tomcat版本 tomcat home 选择tomcat安装目录,即bin的上一层 ...
- 最终版-perl工具解析数据库的报告文件0120
********************需要根据自己的实际环境修改哦**************************** ******************** 1. 收集awr报告样本 a ...
- Alljoyn 概述(3)
开发工具 • scons:一个 Python写的自动化构建工具,是对 gnu make 改进的替代工具 • D-Feet:一个D-Bus调试工具 • C++ Code Generator Tool ( ...
- jQuery 停止动画
jQuery stop() 方法用于在动画或效果完成前对它们进行停止. 停止滑动 点击这里,向上/向下滑动面板 实例 jQuery stop() 滑动演示 jQuery stop() 方法. jQue ...
- 理解pkg-config工具
你在 Unix 或 Linux 下开发过软件吗?写完一个程序,编译运行完全正常,在你本机上工作得好好的,你放到源代码管理系统中.然后,告诉你的同事说,你可以取下来用了.这时,你长长的出了一口气,几天的 ...
- SGU 115.Calendar
连水3道,还能更水么... #include <stdio.h> using namespace std; ] = {, , , , , , , , , , , , }; int n, m ...
- modifytime是一个神奇的column name----这边文章是错的totally,因为我的实验不彻底。timestamp属性很神奇,头一个timestamp,会自动的成DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
在mysql里边modifytime是一个神奇的column name,试一下. 请执行sql语句 CREATE TABLE `test_time` ( `modifytime` timestamp ...
- amf0解释一下
就简单记录一下省了以后忘了,amf0其实就几种数据格式的网络传输格式,比如数字,字符串,这些格式在传输的时候他给单独序列化了一下,主要支持以下这些: #define AMF0_NUMBER ((uin ...
- 15_RHEL7挂载NTFS分区
1.下载ntfs-3g wget https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2015.3.14.tgz 2.安装 tar -zxvf ntfs-3 ...