最近一个项目需要用到JSON,需要在JSON字符串和对象之间相互转换,在网上找了些资料,发现google的Gson还是比较不错的。

废话不说,下面是简单的例子:

先上源码:下载(包含jar包)

Person实体类

package com.hsun.json;

/**

* Person 实体类

* @author hsun

*

*/

public class Person {

private int id;

private String name;

private int age;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

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;

}

@Override

public String toString() {

return "Person [id=" + id + ", 姓名=" + name + ", 年龄=" + age + "]";

}

}实体很简单,当然Person的字段也可以是List、Set、Map等~~~

把对象转为JSON格式的字符串

Gson gs = new Gson();

Person person = new Person();

person.setId(1);

person.setName("我是酱油");

person.setAge(24);

String objectStr = gs.toJson(person);//把对象转为JSON格式的字符串

System.out.println("把对象转为JSON格式的字符串/// "+objectStr);

上面的代码重点是Gson对象,它提供了toJason()方法将对象转换成Json字符串,上面代码的objectStr对象值为:

{"id":1,"name":"我是酱油","age":24}

把List转为JSON格式的字符串

Gson gs = new Gson();

List persons = new ArrayList();

for (int i = 0; i < 10; i++) {//初始化测试数据

Person ps = new Person();

ps.setId(i);

ps.setName("我是第"+i+"个");

ps.setAge(i+10);

persons.add(ps);

}

String listStr = gs.toJson(persons);//把List转为JSON格式的字符串

System.out.println("把list转为JSON格式的字符串/// "+listStr);

上面代码的listStr对象值为:

[{"id":0,"name":"我是第0个","age":10},{"id":1,"name":"我是第1个","age":11},{"id":2,"name":"我是第2个","age":12},{"id":3,"name":"我是第3个","age":13},{"id":4,"name":"我是第4个","age":14},{"id":5,"name":"我是第5个","age":15},{"id":6,"name":"我是第6个","age":16},{"id":7,"name":"我是第7个","age":17},{"id":8,"name":"我是第8个","age":18},{"id":9,"name":"我是第9个","age":19}]

很标准的json数据~~~

下面来看看gson的反序列化,Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。

我们一般都会碰到两种情况,1:转成单一实体对象  2:转换成对象列表或者其他结构。

先看第一种:

JSON字符串为上面的objectStr:{"id":1,"name":"我是酱油","age":24}

代码:

Person jsonObject = gs.fromJson(objectStr, Person.class);//把JSON字符串转为对象

System.out.println("把JSON字符串转为对象///  "+jsonObject.toString());提供两个参数,分别是json字符串以及需要转换对象的类型。

第二种,转换成列表类型:

JSON字符串为上面的listStr:[{"id":0,"name":"我是第0个","age":10},{"id":1,"name":"我是第1个","age":11},{"id":2,"name":"我是第2个","age":12},{"id":3,"name":"我是第3个","age":13},{"id":4,"name":"我是第4个","age":14},{"id":5,"name":"我是第5个","age":15},{"id":6,"name":"我是第6个","age":16},{"id":7,"name":"我是第7个","age":17},{"id":8,"name":"我是第8个","age":18},{"id":9,"name":"我是第9个","age":19}]

代码:

List jsonListObject = gs.fromJson(listStr, new TypeToken>(){}.getType());//把JSON格式的字符串转为List

for (Person p : jsonListObject) {

System.out.println("把JSON格式的字符串转为List///  "+p.toString());

}可以看到上面的代码使用了TypeToken,它是Gson提供的数据类型转换器,可以支持各种数据集合类型转换。

Gson的基本使用就这么多,其他请参考官方文档,希望对你们有帮助~~~

c#谷歌 json转对象_利用Google Gson实现JSON字符串和对象之间相互转换相关推荐

  1. JS解析json数据(json字符串和数组之间相互转换)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...

  2. python 根据地址求经纬度 谷歌_利用google的API获取世界城市经纬度(python实现)

    google API 需要 --. #-*- coding: utf8 -*- from xml.dom import minidom import urllib2, urllib #这个KEY本来是 ...

  3. python json删除字段_如何使用python删除json对象?

    我正在使用python删除和更新一个由用户提供的数据生成的JSON文件,这样数据库中只存储很少的项目.我想从JSON文件中删除一个特定的对象. 我的JSON文件是: [ { "ename&q ...

  4. java json asc排序_按ASCII码给json对象排序

    /** * 按ASCII码给json对象排序(规定:升序) * @param json * @return */ public static String sortAsciiJson(String j ...

  5. Okhttp源码分析以及Google Gson解析json数据实例

    Okhttp Github的Okhttp OkHttp是一个高效的HTTP客户端,它有以下默认特性: 支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接 透明的GZIP压缩减少响 ...

  6. python3迭代器和可迭代对象_一文读懂 Python3 可迭代对象、迭代器、生成器区别...

    笔者学习Python已有一段时间,一直以为对于可迭代对象(iterable).迭代器(iterator).生成器(generator)有一定理解了,直到看到<流畅的python>中的讲解才 ...

  7. kotlin半生对象_如何在Kotlin中使用Actor实现对象池

    kotlin半生对象 by osha1 由osha1 如何在Kotlin中使用Actor实现对象池 (How to implement an Object-Pool with an Actor in ...

  8. 易语言json置入_易语言取置JSON文本使用方法-易语言学习-猴子技术宅

    什么是JSON? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度. JSON到底是什么? JSON就是一串字符串 只 ...

  9. java 两日期的周数_利用 Java 中 Calendar 计算两个日期之间的天数和周数

    利用 Java 中 Calendar 计算两个日期之间的天数和周数 前言 究竟什么是一个 Calendar 呢? 中文的翻译就是日历, 那我们立刻可以想到我们生活中有阳 (公) 历阴 (农) 历之分它 ...

最新文章

  1. 多视图立体匹配论文分享 | Fast-MVSNet (CVPR2020)
  2. mybatis以及预编译如何防止SQL注入
  3. OpenSSL使用指南
  4. matlab中fdyn,Matlab的用法总结
  5. 在NOILINUX下的简易VIM配置
  6. bzoj 2878 [Noi2012]迷失游乐园——树上的期望dp
  7. python中的序列类型和序列号_python~序列类型及操作
  8. C++ 对引用的理解5
  9. Linux下BitNami Redmine的插件安装与更新
  10. Android系统性能优化(68)---绘制优化
  11. 贯穿时域与频域的方法——傅立叶分析
  12. python 重启同一个程序_Python – 在重启之间保存程序的状态?
  13. Error:Failed to open zip file. Re-download dependencies and sync project
  14. java 图形编辑器_SVGX矢量化图形编辑器,100%JAVA实现的矢量化图形编辑器
  15. 洛谷 P3388 【模板】割点(割顶) 根+非根+dfn[]+low[]+不一样的Tarjan算法
  16. 【香橙派4B】1、重刷系统
  17. c++中的pow()函数
  18. 实验二 CPU 部件实现之 ALU 和寄存器堆
  19. python模拟输入文本内容(打破复制粘贴限制)
  20. 与同行的对比,M-DAO的崛起已成定局

热门文章

  1. 清北学堂2019.8.7
  2. 滑环在机电行业的应用
  3. 手机大厂开始走上AI芯片 将来掀起AI应用
  4. 计算机二级offic表格公式,计算机二级OfficeEexcel公式汇总.docx
  5. ubuntu简易教程(如何使用noi linux)
  6. CSS - 制作三角形
  7. 生产者消费者2.0(lock)
  8. 科研教育「双目视觉技术」首选!维视MV-VS220双目立体视觉系统开发平台
  9. Order by 1 的解释
  10. 深信服2018年实习生校园招聘总结