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数据的解析的更多相关文章

  1. javascript中 json数据的解析与序列化

    首先明确一下概念: json格式数据本质上就是字符串: js对象:JavaScript 中的几乎所有事务都是对象:字符串.数字.数组.日期.函数,等等. json数据的解析: 就是把后端传来的json ...

  2. Android 学习笔记之Volley(七)实现Json数据加载和解析...

    学习内容: 1.使用Volley实现异步加载Json数据...   Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...

  3. Android 之 json数据的解析(jsonReader)

    json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...

  4. Android中使用HttpURLConnection实现GET POST JSON数据与下载图片

    Android中使用HttpURLConnection实现GET POST JSON数据与下载图片 Android6.0中把Apache HTTP Client全部的包与类都标记为deprecated ...

  5. J2EE Web开发入门—通过action是以传统方式返回JSON数据

    关键字:maven.m2eclipse.JSON.Struts2.Log4j2.tomcat.jdk7.Config Browser Plugin Created by Bob 20131031 l ...

  6. 前端ajax用post方式提交json数据给后端时,网络报错 415

    项目框架:spring+springmvc+mybatis 问题描述:前端ajax用post方式提交json数据给后端时,网络报错 415 前端异常信息:Failed to load resource ...

  7. HttpURLConnection从网上获取Json数据并解析详解

    HttpURLConnection从网上获取Json数据并解析 1.HttpURLConnection请求数据的步骤 (1)构造一个URL接口地址: URL url = new URL("h ...

  8. iOS开发网络篇—JSON数据的解析

    iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...

  9. android客户端从服务器端获取json数据并解析的实现代码

    今天总结一下android客户端从服务器端获取json数据的实现代码,需要的朋友可以参考下   首先客户端从服务器端获取json数据 1.利用HttpUrlConnection /** * 从指定的U ...

随机推荐

  1. 第一篇、Apache和Tomcat的整合

    1.web架构 首先上图,解释web通用架构 通常情况下分为三大块 : ★ Web server :  通常情况下由 Apache Http Server  . IBM Http Server  .I ...

  2. 在Java控制台模拟dos命令下操作MySQL

    一.导入mysql的驱动:"com.mysql.jdbc.Driver", 必须将mysql的驱动 包(jar文件)导入到本工程中. Class.forName("com ...

  3. (转载)Javascript 进阶 作用域 作用域链

    载请标明出处:http://blog.csdn.net/lmj623565791/article/details/25076713 一直觉得Js很强大,由于长期不写js代码,最近刚好温故温故. 1.J ...

  4. iOS 常见错误:CALayer position contains NaN: [14 nan]

    Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contai ...

  5. javascript社交平台分享-新浪微博、QQ微博、QQ好友、QQ空间、人人网

    整理的五个社交平台的分享 <!doctype html> <html lang="en"> <head> <meta charset=&q ...

  6. Vijos P1521 跳舞 贪心

    本来想找一道网络流的题来着,结果这道题越看越不对劲,总觉得这题存在不用网络流的解法 看了题解区以后坚定了自己的猜想 #include <cstdio> #include <cstri ...

  7. cuda中时间用法

    转载:http://blog.csdn.net/jdhanhua/article/details/4843653 在CUDA中统计运算时间,大致有三种方法: <1>使用cutil.h中的函 ...

  8. SGU 123.The sum

    #include <iostream> using namespace std; int f[50]={0,1,1}; int main(){ int n,s=0; cin>> ...

  9. 关于Weblogic 10.3.1集群及调优经历

    一.  集群 ·集群易于管理.灵活的负载平衡.较强的安全机制 ·配置前的规划 操作系统 硬件配置 角色 windows IP: 192.168.1.101:7001 AdminServer windo ...

  10. DBCONN

    package Ulike_servlet; //将该类保存到com.tools包中import java.sql.Connection;import java.sql.DriverManager;i ...