一、 谷歌GSON这个Java类库可以把Java对象转换成JSON,也可以把JSON字符串转换成一个相等的Java对象。Gson支持任意复杂Java对象包括没有源代码的对象。

二、Gson解析Json步骤
 A、服务器端将数据转换成json字符串
   首先、服务器端项目要导入Gson的jar包到BuiltPath中。(

Gson的jar:http://code.google.com/p/google-gson/  
我们还可以下载gson的帮助文档)

然后将数据转为json字符串,核心函数是:
    public
static String createJsonString(Object value)
    {
   
    Gson gson = new Gson();
   
    String str =
gson.toJson(value);
   
    return
str;
    }
B、客户端将json字符串转换为相应的javaBean
   
首先客户端也要导入gson的两个jar包,json的jar就不需要导入了(因为android项目中已经集成了json的jar包所以这里无需导入)
  
1、客户端获取json字符串

public class HttpUtil
{

public static String getJsonContent(String urlStr)
   
{
   
   
try
   
   
{// 获取HttpURLConnection连接对象
   
   
   
URL url = new URL(urlStr);
   
   
   
HttpURLConnection httpConn = (HttpURLConnection) url
   
   
   
   
   
.openConnection();
   
   
   
// 设置连接属性
   
   
   
httpConn.setConnectTimeout(3000);
   
   
   
httpConn.setDoInput(true);
   
   
   
httpConn.setRequestMethod("GET");
   
   
   
// 获取相应码
   
   
   
int respCode = httpConn.getResponseCode();
   
   
   
if (respCode == 200)
   
   
   
{
   
   
   
   
return ConvertStream2Json(httpConn.getInputStream());
   
   
   
}
   
   
}
   
   
catch (MalformedURLException e)
   
   
{
   
   
   
// TODO Auto-generated catch block
   
   
   
e.printStackTrace();
   
   
}
   
   
catch (IOException e)
   
   
{
   
   
   
// TODO Auto-generated catch block
   
   
   
e.printStackTrace();
   
   
}
   
   
return "";
   
}

private static String ConvertStream2Json(InputStream
inputStream)
   
{
   
   
String jsonStr = "";
   
   
// ByteArrayOutputStream相当于内存输出流
   
   
ByteArrayOutputStream out = new ByteArrayOutputStream();
   
   
byte[] buffer = new byte[1024];
   
   
int len = 0;
   
   
// 将输入流转移到内存输出流中
   
   
try
   
   
{
   
   
   
while ((len = inputStream.read(buffer, 0, buffer.length)) !=
-1)
   
   
   
{
   
   
   
   
out.write(buffer, 0, len);
   
   
   
}
   
   
   
// 将内存流转换为字符串
   
   
   
jsonStr = new String(out.toByteArray());
   
   
}
   
   
catch (IOException e)
   
   
{
   
   
   
// TODO Auto-generated catch block
   
   
   
e.printStackTrace();
   
   
}
   
   
return jsonStr;
   
}
}
2、使用泛型获取javaBean(核心函数)
    public
static <T> T getPerson(String
jsonString, Class<T> cls) {
   
    T t =
null;
   
    try {
   
   
    Gson gson = new Gson();
   
   
    t =
gson.fromJson(jsonString, cls);
   
    } catch
(Exception e) {
   
   
    // TODO:
handle exception
   
    }
   
    return
t;
    }

public static <T>
List<T> getPersons(String jsonString,
Class<T> cls) {
   
   
List<T> list = new
ArrayList<T>();
   
    try {
   
   
    Gson gson = new Gson();
   
   
    list =
gson.fromJson(jsonString, new
TypeToken<List<cls>>()
{
   
   
   
}.getType());
   
    } catch
(Exception e) {
   
    }
   
    return
list;
    }
public static List<Map<String,
Object>> listKeyMaps(String
jsonString) {
   
   
List<Map<String,
Object>> list = new
ArrayList<Map<String,
Object>>();
   
    try {
   
   
    Gson gson = new Gson();
   
   
    list =
gson.fromJson(jsonString,
   
   
   
   
    new
TypeToken<List<Map<String,
Object>>>() {
   
   
   
   
   
}.getType());
   
    } catch
(Exception e) {
   
   
    // TODO:
handle exception
   
    }
   
    return
list;
    }

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

  1. 大话JSON之Gson解析JSON

    (三)解析Json数组(多条Json数据) 比如有如下Json数据: [{'name':'John', 'grade':[{'course':'English','score':100},{'cour ...

  2. Android JSON、GSON、FastJson的封装与解析

    声明: 1.本帖只提供代码,不深入讲解原理.如果读者想要深入了解,那就不要在这个帖子上浪费时间了 2.客户端用的是Google官方的Volley访问服务器,具体了解Volley请戳 这里 3.本帖三种 ...

  3. 使用Gson解析json

    前边的博客说过将json解析成java的方法,使用的是 这几个jar包,但是在解析时层遇到一个问题,就是在将时间字符串转换为java的Timestamp对象时会抛出异常,这个问题一直放在哪里没有去解决 ...

  4. Android中使用Gson解析JSON数据的两种方法

    Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下   Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...

  5. Gson解析复杂的json数据

    最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的json解析方法即JsonObject ...

  6. 用GSON解析Json格式数据

    GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...

  7. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. Gson解析Json格式数据

    //数据定义:=========================================== class User{ String name; String password; String ...

  9. 使用Gson解析复杂的json数据

    Gson解析复杂的json数据 最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的jso ...

随机推荐

  1. 海思hi3518 移植live555 实现H264的RTSP播放

    用海思的交叉编译工具交叉编译live555 ,结合海思例子venc中的H264部分,完成RTSP的视频数据发布. 用vlc可以播放,但是实时性比较差,慢了5秒

  2. 8)Linux程序设计入门--线程操作

    )Linux程序设计入门--线程操作 前言:Linux下线程的创建 介绍在Linux下线程的创建和基本的使用. Linux下的线程是一个非常复杂的问题,由 于我对线程的学习不时很好,我在这里只是简单的 ...

  3. mac活动监视器 的含义

    应用内存:应用所使用的内存数量. 联动内存:系统运行需要的内存.联动内存不能缓存且必须存放在内存中,所以不能被其他应用使用. 压缩:为腾出更多内存而压缩的内存数量.当电脑接近其最大内存能力时,内存中的 ...

  4. iOS:提示框(警告框)控件UIActionSheet的详解

    提示框(警告框)控件2:UIActionSheet 功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能.它与导航栏类似,它继承自UIView.   风格类型: ...

  5. Echarts的legend改变图例图标为自定义图片

    当折线图时,legend默认时rect形式,如果需要改图例形状,可以自己设置legend的icon属性 legend: { icon:'stack' }, 1.自定义每个图例样式:为data的每个对象 ...

  6. python 相似语句匹配(非机器学习)

    #coding=utf-8 import xlrd import distance from sklearn.feature_extraction.text import CountVectorize ...

  7. Ubuntu简单搭建git私有服务

    gitserver搭建过程 搭建gitserver过程记录 例如以下: 环境: serverUbuntu虚拟机(Boss),能通过网络訪问到(server地址:192.168.9.103). clie ...

  8. KRBTabControl(中文)Windows选项卡控件

    本文阐述了如何在C#使自定义Windows选项卡控件. Download demo project - 82.4 KB Download source - 252 KB 介绍 本文讨论如何使用.NET ...

  9. Unity5.1 新的网络引擎UNET(十五) Networking 引用--下

     孙广东 2015.7.21 本节提供了与网络系统一起使用的组件的具体信息. 10.Network Proximity Checker Suggest a change Success! Than ...

  10. 【Hibernate一】概述及入门

    Hibernate学习框架: 1.基本部分      crud的操作      主键的生成机制      类型      持久化类      映射文件 *.hbm.xml      配置文件 hibe ...