一、 谷歌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. 非易失性内存在阿里生产环境的首次应用:Tair NVM最佳实践总结
  2. mybatis实战教程(mybatis in action),mybatis入门到精通(转)
  3. 基于 esp32 + lvgl8.0 的小电视
  4. struts2在lt;s:selectgt;用动态标签
  5. jQuery插件:Tiny Scrollbar滚动条插件(滚动条美化、默认滚动条)
  6. MySQL备份/还原 Unknown storage engine 'InnoDB'
  7. Vue系列(2):Vue 安装
  8. hdu 1254 推箱子(嵌套搜索,bfs中有dfs)
  9. 厉害了网页扫码,所有方法都给你总结到这了,赶紧收藏
  10. 交友盲盒小程序版本 全开源版本
  11. 人件札记:软件开发的管理思想
  12. 【笔记】FFC 20624 Winter 09的mil与mm显示转换
  13. python打字案例,Python 小案例 打字练习
  14. Ubuntu16环境安装和使用NFS
  15. Java 7 - TWR 和 多异常捕获 示例
  16. [VN2020 公开赛]simpleHeap-记录一次gef调试过程
  17. DHCP介绍及H3C配置DHCP
  18. 2021美赛写作(一)
  19. 【信号与系统】预习笔记(每日更新ing)
  20. 国学堂-梁冬对话吴伯凡

热门文章

  1. MongoDB vs MySQL,哪个效率更高?
  2. Spring 事务的那些坑,都在这里了!
  3. 我是如何把30000行代码重构成15行
  4. 代码重构方向原则指导
  5. 用Elasticsearch构建电商搜索平台,一个极有代表性的基础技术架构和算法实践案例...
  6. 黑客攻击「宝贝回家寻子网」致数据丢失:丧尽天良
  7. Kotlin 1.0 正式版发布啦
  8. 两个形状不同的长方形周长_三年级上册数学《周长》同步练习,附答案
  9. python三次方函数_python函数基础------第三次作业讲解(二)
  10. Python变量和字符串详解