一、 谷歌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 getPerson(String

jsonString, Class cls) {

T t =

null;

try {

Gson gson = new Gson();

t =

gson.fromJson(jsonString, cls);

} catch

(Exception e) {

// TODO:

handle exception

}

return

t;

}

public static

List getPersons(String jsonString,

Class cls) {

List list = new

ArrayList();

try {

Gson gson = new Gson();

list =

gson.fromJson(jsonString, new

TypeToken>()

{

}.getType());

} catch

(Exception e) {

}

return

list;

}

public static List

Object>> listKeyMaps(String

jsonString) {

List

Object>> list = new

ArrayList

Object>>();

try {

Gson gson = new Gson();

list =

gson.fromJson(jsonString,

new

TypeToken

Object>>>() {

}.getType());

} catch

(Exception e) {

// TODO:

handle exception

}

return

list;

}

java gson 解析json字符串_JSON 之GSON 解析相关推荐

  1. java list 转json 字符串_JSON的String字符串与Java的List列表对象的相互转换

    1.JSON的String字符串与Java的List列表对象的相互转换 在前端: 1.如果json是List对象转换的,可以直接遍历json,读取数据. 2.如果是需要把前端的List对象转换为jso ...

  2. java中gso是什么意思_Java中用Gson解析json字符串

    本文最后更新于2019年9月13日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢! =Start= 缘由: 因为阿里开源的fastjson前段时间爆出的漏洞实在是太多了(而且有些漏洞他 ...

  3. android jackson 解析json字符串,android:json解析的两个工具:Gson和Jackson的使用小样例...

    1.简单介绍 json是android与server通信过程中经常使用的数据格式,比如.例如以下是一个json格式的字符串: {"address":"Nanjing&qu ...

  4. Gson案例:Java对象与JSON字符串相互转换

    Gson案例:Java对象与JSON字符串相互转换 一.Gson概述 Gson是一个Java类库,可将Java对象转换为相应的JSON形式,也可以将JSON字符串转换为对应的Java对象.Gson是一 ...

  5. Gson解析json字符串,并封装成ListT

    最近一个项目中,需要将从服务器上获取到的JSON字符串转换为对象,大概研究了一下,发现在项目中很多地方都要用到,而且有的时候需要返回的是一个集合,所以写了个方法,留着自用. public class ...

  6. Java解析json字符串和json数组

    Java解析json字符串和json数组 public static Map<String, String> getUploadTransactions(String json){Map& ...

  7. java处理json字符串_常见java对象转换为json字符串处理!!!

    1.JSON简介 1. 概念: JavaScript Object NotationJavaScript对象表示法 Person p = new Person(); p.setName("张 ...

  8. java中转json字符串_如何在Java中转义JSON字符串-Eclipse IDE技巧

    java中转json字符串 在Java应用程序中工作或进行JSON解析时,通常很常见的做法是从某些资源(例如RESTful Web服务)中复制粘贴JSON字符串,然后使用Jackson库解析JSON. ...

  9. 如何在Java中转义JSON字符串-Eclipse IDE技巧

    在Java应用程序中工作或进行JSON解析时,通常很常见的做法是从某些资源(例如RESTful Web服务)中复制粘贴JSON字符串,然后使用Jackson库解析JSON. 这是测试和学习Java中解 ...

  10. cjson构建_[置顶] cJSON库(构建json与解析json字符串)-c语言

    一.c语言获取json中的数据. 1.先要有cJOSN库,两个文件分别是cJSON.c和cJSON.h. 2.感性认识 char * json = "{ \"json\" ...

最新文章

  1. python3连接mysql,python3连接MySQL数据库实例详解
  2. 开源人工智能使用卷积网格自动编码器生成3D面部
  3. 【RLChina2020】 强化学习夏令营课件(附pdf下载)
  4. layer.open 模态弹窗, 隐藏关闭按钮, 隐藏按钮组
  5. 零基础,最完整的WordPress建站教程
  6. 程序清单3-1 测试能否对标准输入设置偏移量
  7. unity3d 大地图接壤_架空世界地图制作指南(六)气候带
  8. java 素数欧拉筛选_[C++]欧拉素数筛的理解与实现
  9. 4项探索+4项实践,带你了解华为云视觉预训练研发技术
  10. SpringCloud工作笔记033---找不到import org.springframework.cloud.client.discovery.EnableDiscoveryClient;无法导入
  11. c#面试3(选择题)
  12. 关于Javascript表单验证
  13. PenTool:一个基于Qt的仿真软件Demo
  14. 怎么清理ug10注册表_鼠标的滚轮失灵了怎么办
  15. idea返回上一步快捷键无效
  16. python爬取淘宝数据魔方_读《淘宝数据魔方技术架构解析》有感
  17. 【angular-实践】实现浏览器F11全屏效果
  18. iOS开发 动画(Animation)图片360度不停旋转
  19. 国产数据库普及风暴有奖征文获奖名单揭晓
  20. Kettle 9.0 源码编译

热门文章

  1. 离阿里最近的机会,来了!
  2. 如何学会阅读源码,看这篇就够了!
  3. 关于Spring,所有的都在这了,具有收藏价值
  4. Java高效开发12个精品库
  5. 聊聊你们关心的视频号
  6. 使用curl来调试你的应用
  7. 被占满_关晓彤在家做饭暴露豪宅内景,冰箱占满一整面墙,酒柜比人还要高
  8. mybatis 多数据源_Spring Boot 整合Mybatis实现多数据源配置及踩过的坑
  9. 实验二 数据库和表的操作
  10. Sublime Text (崇高文本)