近期在做一个java web service项目,须要用到jason,本人对java不是特别精通,于是開始搜索一些java平台的json类库。

发现了google的gson。由于之前对于protocolbuf有一些了解,带着一些好奇心。我開始使用了gson。

经过比較,gson和其它现有java json类库最大的不同一时候gson须要序列化得实体类不须要使用annotation来标识须要序列化得字段,同一时候gson又能够通过使用annotation来灵活配置须要序列化的字段。

以下是一个简单的样例:

public class Person {

private String name;
private int age;

/**
* @return the name
*/
public String getName() {
return name;
}

/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}

/**
* @return the age
*/
public int getAge() {
return age;
}

/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}

@Override
public String toString()
{
return name + ":" +age;
}
}

实体非常easy,两个字段。当然实体中的字段也能够是List或者Set类型的。

Gson gson = new Gson();
List<Person> persons = new ArrayList<Person>();
for (int i = 0; i < 10; i++) {
Person p = new Person();
p.setName("name" + i);
p.setAge(i * 5);
persons.add(p);
}
String str = gson.toJson(persons);

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

[{"name":"name0","age":0},{"name":"name1","age":5},{"name":"name2","age":10},{"name":"name3","age":15},{"name":"name4","age":20},{"name":"name5","age":25},{"name":"name6","age":30},{"name":"name7","age":35},{"name":"name8","age":40},{"name":"name9","age":45}]

非常标准的json数据。非常easy吧,呵呵。

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

在日常应用中,我们一般都会碰到两种情况,转成单一实体对象和转换成对象列表或者其它结构。

先来看第一种:

比方json字符串为:[{"name":"name0","age":0}]

代码:

Person person = gson.fromJson(str, Person.class);

提供两个參数,各自是json字符串以及须要转换对象的类型。

另外一种,转换成列表类型:

代码:

List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());
for(int i = 0; i < ps.size() ; i++)
{
Person p = ps.get(i);
System.out.println(p.toString());
}

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

Gson的基本使用就是这么多,至于annotation方面能够參考gson的官方文档。希望能对初学java和gson的同学有所帮助。

Gson把对象转成json格式的字符串相关推荐

  1. 消息转换器之把返回来的对象转换成json格式

    消息转换器之把返回来的对象转换成json格式 这个是把数据库的数据通过对象返给前端,会出现下列没有转换的现象 这个需要我们加入消息转换器进行转换,把Java对象转为json字符串,在配置类加入这段代码 ...

  2. [转]C# 将类的内容写成JSON格式的字符串

    将类的内容写入到JSON格式的字符串中 本例中建立了Person类,赋值后将类中内容写入到字符串中 运行本代码需要添加引用动态库Newtonsoft.Json 程序代码: using System; ...

  3. 原来JAVA对象转JSON格式的字符串如此简单,返回来暂时不会做,留下纪念下

    package info.moogens.mvc.tools.json;import java.lang.reflect.Array; import java.lang.reflect.Field; ...

  4. 将对象集合包装成JSON格式

    import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; import ...

  5. JAVA对象通过jackson转成json格式,属性名首字母变成小写的解决方法

    2019独角兽企业重金招聘Python工程师标准>>> java代码对象如下: package com.evideostb.billsystem.module.model;impor ...

  6. GSON将Java对象转成JSON时,如何排除某些字段

    GSON 是Google发布的 JSON 序列化/反序列化工具,非常容易使用.本文简要讨论在使用GSON将Java对象转成JSON时,如何排除某些字段. 最简单的用法 假设有下面这个类: 1 clas ...

  7. 将JSON格式的字符串转换成List集合引入gson 的jar包

    将JSON格式的字符串转换成List集合 排错 IDEA中java文件出现小黄色的J . 打开项目工程的工程结构设置(快捷键:ctrl+alt+shift+s),如图中所示 . . 选择第一栏的Mod ...

  8. 通过google的gson把xml转成json

    在百度上找了很久都没有找到通过google的gson把xml转成json的文档,索性自己查资料写了个小工具,基本功能在代码注释里都描述的比较详细了.由于笔者这边的数据源格式有点乱,所以代码里加了一些容 ...

  9. json格式的字符串转为json对象遇到特殊字符问题解决

    中午做后台发过来的json的时候转为对象,可是有几条数据一直出不来,检查发现json里包含了换行符,造成这种情况的原因可能是编辑部门在编辑的时候打的回车造成的 假设有这样一段json格式的字符串 1 ...

最新文章

  1. Asp.net 中 OnClientClick 与 OnClick 的执行顺序
  2. suse 11 oracle 10g,suse11+oracle10g安装
  3. CentOS服务器iptables配置
  4. 干货 | 如何系统学习 C 语言?
  5. BAT 面试中,遇到知识盲点如何巧妙圆场?
  6. 黑马博客——详细步骤(十一)博客系统的前台展示页面
  7. 洛谷P3676 小清新数据结构题(动态点分治)
  8. from scipy import special, optimize, from ._nnls import nnls ImportError: DLL load failed: 找不到指定的模块。
  9. python之requests模块
  10. php中rand函数怎么用,php rand函数用法是什么
  11. 课设-51单片机+PM2.5+温湿度(程序+原理图+Protel仿真)
  12. 计算机导论第五讲MOOC模拟答案,MOOC理念指导下的计算机导论课程_微课堂_设计与思考_朱淑鑫...
  13. 分布式专题(一)什么是分布式
  14. 万维网之父Tim Berners-Lee 获得2016年度图灵奖
  15. 华南理工广州学院 计算机专业,华南理工大学广州学院学子在“中国高校计算机...
  16. png文件头_Android 史上最优雅的实现文件上传、下载及进度的监听
  17. 硬件基础知识---三极管放大电路
  18. 1059. Prime Factors (25)--taste
  19. FreeMarker模板语言开发(整理版)
  20. Python 短信通知系统开发实战

热门文章

  1. [Server] 服务器配置SSH登录邮件通知
  2. NHibernate 2.0 Beta 1 Released和一些工具
  3. 【LibreOJ】#6299. 「CodePlus 2018 3 月赛」白金元首与克劳德斯
  4. SpringMVC整合fastdfs-client-java实现web文件上传下载
  5. 2017视频监控趋势的一些思考
  6. MWeb for iOS 测试版介绍
  7. IIS的虚拟目录和子应用程序
  8. DLL version issue and SQL Parameters Issue
  9. LAMP的安装配置过程:
  10. paramiko向服务器自动上传下载文件