JSON在Java中的相互转换示例详解

什么是JSON?

JSON (JavaScript Object Notation) 是一种轻量级数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 JSON采用完全独立于语言的文本格式,而且很多语言都提供了对json的支持(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这样就使得JSON成为理想的数据交换格式。

数据交换格式,是指客户端和服务器之间通信,传递数据时,数据使用的格式是json

JSON在java中的使用

json在java中操作,需要用到 歌提供的gson工具类

public class GsonTest {

 @Test
 public void test() {
  Scenery scenery = new Scenery(1, "天坛公园", "北京");
  // Javabean 转换成 json 字符串
  // 创建谷歌的 gson 提供的工具类
  Gson gson = new Gson();
  // 使用 toJson() 方法转换
  String json = gson.toJson(scenery);
  System.out.println(json);
  //结果 : {"id":1,"name":"天坛公园","address":"北京"}

  // 使用 formJson 方法将 json 字符串转换为Javabean 对象
  Scenery sceneryBean = gson.fromJson(json, Scenery.class);
  System.out.println(sceneryBean);
  //结果 : Scenery{id=1, name='天坛公园', address='北京'}
 }
 }

List集合 和json字符串的互转

@Test
 public void testList(){
  // List 和json的互转
  List<Scenery> list = new ArrayList<>();
  list.add(new Scenery(1, "野人谷风景区", "湖北"));
  list.add(new Scenery(2, "绿野山庄", "浙江"));
  list.add(new Scenery(3, "天坛公园", "北京"));
  // 创建 gson 工具类
  Gson gson = new Gson();
  // 使用 toJson() 方法 把list集合转换为json字符串
  String json = gson.toJson(list);
  System.out.println(json);
  //结果 : [{"id":1,"name":"野人谷风景区","address":"湖北"},{"id":2,"name":"绿野山庄","address":"浙江"},{"id":3,"name":"天坛公园","address":"北京"}]

  // fromJson 把json字符串转换回list集合
  // toJson() 是把对象转换为json字符串
  // fromJson是把json字符串转换回java对象
  // 如果是转回一个JavaBean.则第二个参数是 转换的javaBean的具体类型
  // 如果是转回一个集合.则第二个参数是type类型

  // 使用fromJson() 方法将json字符串转换为list集合
  //使用匿名内部类
  List<Scenery> list1 = gson.fromJson(json, new TypeToken<List<Scenery>>(){}.getType());
  System.out.println(list1);
  //结果 : [Scenery{id=1, name='野人谷风景区', address='湖北'}, Scenery{id=2, name='绿野山庄', address='浙江'}, Scenery{id=3, name='天坛公园', address='北京'}]

  // 在转成javaBean对象
  Scenery scenery = list1.get(0);
  System.out.println(scenery);
  //结果 : Scenery{id=1, name='野人谷风景区', address='湖北'}
 }

map 和json的互转

@Test
 public void testMap(){
  Map<String, Scenery> sceneryMap = new HashMap<>();
  sceneryMap.put("CN10121010103A", new Scenery(1, "杭州极地海洋公园", "杭州"));
  sceneryMap.put("CN10121010104A", new Scenery(2, "雷峰塔", "杭州"));
  sceneryMap.put("CN10109060801A", new Scenery(3, "八达岭长城", "北京"));
  Gson gson = new Gson();
  // 所有的java对象转成json字符串都统一使用 toJson() 方法
  String json = gson.toJson(sceneryMap);
  System.out.println(json);
  //结果 : {"CN10121010103A":{"id":1,"name":"杭州极地海洋公园","address":"杭州"},"CN10121010104A":{"id":2,"name":"雷峰塔","address":"杭州"},"CN10109060801A":{"id":3,"name":"八达岭长城","address":"北京"}}

  // 吧json字符串转换回 map集合
  // 使用匿名内部类
  Map<String,Scenery> map = gson.fromJson(json, new TypeToken<Map<String, Scenery>>() {
  }.getType());
  System.out.println(map);
  //结果 : {CN10121010103A=Scenery{id=1, name='杭州极地海洋公园', address='杭州'}, CN10121010104A=Scenery{id=2, name='雷峰塔', address='杭州'}, CN10109060801A=Scenery{id=3, name='八达岭长城', address='北京'}}
  Scenery cn10109060801A = map.get("CN10109060801A");
  System.out.println(cn10109060801A);
  // 结果 : Scenery{id=3, name='八达岭长城', address='北京'}
 }

总结

到此这篇关于JSON在Java中的相互转换示例详解的文章就介绍到这了,更多相关json java 相互转换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java实现Json字符串与Object对象相互转换的方式总结

    本文实例总结了Java实现Json字符串与Object对象相互转换的方式.分享给大家供大家参考,具体如下: Json-Lib.Org.Json.Jackson.Gson.FastJson五种方式转换json类型 只列举了最省事的方式.不涉及复制情况和速度. 测试用例,一个User类,属性name,age,location.重写toString(). public class User { private String name; private Integer age; private Stri

  • java实现Xml与json之间的相互转换操作示例

    本文实例讲述了java实现Xml与json之间的相互转换操作.分享给大家供大家参考,具体如下: 旁白: 最近关于xml与json之间的转换都搞蒙了,这里写一个demo,以后备用. 正题: project格式是: jar包是一个一个检出来的,还算干净了. 代码: 工具类: package exercise.xml; import net.sf.json.JSON; import net.sf.json.JSONSerializer; import net.sf.json.xml.XMLSerial

  • java 读取excel文件转换成json格式的实例代码

    需要读取excel数据转换成json数据,写了个测试功能,转换正常: JSON转换:org.json.jar 测试类:  importFile.java: package com.siemens.util; import java.util.ArrayList; import java.util.List; import org.json.JSONException; import org.json.JSONObject; import org.apache.poi.ss.usermodel.R

  • 详解json string转换为java bean及实例代码

    详解json string转换为java bean及实例代码 pom中添加如下两个库: <dependency> <groupId>org.codehaus.jackson </groupId> <artifactId>jackson-core-asl</artifactId> <version>1.9.2</version> <scope>provided</scope> </depende

  • java将XML文档转换成json格式数据的示例

    本文介绍了java将XML文档转换成json格式数据的示例,分享给大家,具体如下: 功能 将xml文档转换成json格式数据 说明 依赖包: 1. jdom-2.0.2.jar : xml解析工具包; 2. fastjson-1.1.36.jar : 阿里巴巴研发的高性能json工具包 程序源代码 package com.xxx.open.pay.util; import com.alibaba.fastjson.JSONObject; import org.jdom2.Element; imp

  • JSON在Java中的相互转换示例详解

    什么是JSON? JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. JSON采用完全独立于语言的文本格式,而且很多语言都提供了对json的支持(包括C, C++, C#, Java, JavaScript, Perl, Python等). 这样就使得JSON成为理想的数据交换格式. 数据交换格式,是指客户端和服务器之间通信,传递数据时,数据使用的格式是json JSON在java中的使用 json在ja

  • Java中的静态内部类详解及代码示例

    1. 什么是静态内部类 在Java中有静态代码块.静态变量.静态方法,当然也有静态类,但Java中的静态类只能是Java的内部类,也称为静态嵌套类.静态内部类的定义如下: public class OuterClass { static class StaticInnerClass { ... } } 在介绍静态内部类之前,首先要弄清楚静态内部类与Java其它内部类的区别. 2. 内部类 什么是内部类?将一个类的定义放在另一个类的内部,就是内部类.Java的内部类主要分为成员内部类.局部内部类.

  • Java中的HashSet详解和使用示例_动力节点Java学院整理

    第1部分 HashSet介绍 HashSet 简介 HashSet 是一个没有重复元素的集合. 它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素. HashSet是非同步的.如果多个线程同时访问一个哈希 set,而其中至少一个线程修改了该 set,那么它必须 保持外部同步.这通常是通过对自然封装该 set 的对象执行同步操作来完成的.如果不存在这样的对象,则应该使用 Collections.synchronizedSet 方法来"包装" set.

  • Java 中的HashMap详解和使用示例_动力节点Java学院整理

    第1部分 HashMap介绍 HashMap简介 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射. HashMap 继承于AbstractMap,实现了Map.Cloneable.java.io.Serializable接口. HashMap 的实现不是同步的,这意味着它不是线程安全的.它的key.value都可以为null.此外,HashMap中的映射不是有序的. HashMap 的实例有两个参数影响其性能:"初始容量" 和 "加载因子&quo

  • Java中Volatile关键字详解及代码示例

    一.基本概念 先补充一下概念:Java内存模型中的可见性.原子性和有序性. 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉.通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情.为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制. 可见性,是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的.也就是一个线程修改的结果.另一个线程马上就能看到.比如:用volatile修饰的变量,就会具有可见性.volatile修饰的

  • Java中File类方法详解以及实践

    目录 File类概述 File类常用构造器 File类常用方法 常用方法示例 createTempFile临时文件创建示例 FilenameFilter文件过滤器示例 总结 File类概述 File类是java.io包下代表与平台无关的文件和目录.File可以新建.删除.重命名文件和目录,但是不能访问文件内容本身,如果需要访问内容的话,需要通过输入/输出流进行访问. File类可以使用文件路径字符串创建File实例,路径既可以是绝对路径,也可以是相对路径.一般相对路径的话是由系统属性user.d

  • Java InheritableThreadLocal使用示例详解

    目录 引子 InheritableThreadLocal简单使用 InheritableThreadLocal原理分析 引子 public class InheritableThreadLocalDemo { private static ThreadLocal<String> threadLocal = new ThreadLocal<>(); public static void main(String[] args) { threadLocal.set("mainT

  • Java NIO通信基础示例详解

    目录 Java NIO 通信基础介绍 NIO 和 OIO 的对比 使用 FileChannel 完成文件复制的实践案例 使用 DatagramChannel 数据包通道发送数据的实践案例 使用 NIO 实现 Discard 服务器的实践案例 Java NIO 通信基础介绍 高性能的 Java 通信,绝对离不开 Java NIO 技术,现在主流的技术框架或中间件服务器,都使 用了 Java NIO 技术,譬如:Tomcat.Jetty.Netty. Java NIO 由以下三个核心组件组成: Ch

  • 教你正确的Java扩展方法示例详解

    目录 引言 支持扩展方法的语言 C# Visual Basic Kotlin 主角登场 Lombok @ExtensionMethod Manifold 总结 引言 扩展方法能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法没有明显的差异. 支持扩展方法的语言 其实比较多的编程语言都支持了

  • java中正则表达式实例详解

    Java中正则表达式运用实例(参看java中正则表达式运用详解): 测试代码 package test; /** * 在String的matches()方法,split()方法中使用正则表达式. * @author fhd001 */ public class RegexTest { public static void main(String[] args) { /* * 普通字符 */ String str1 = "abc45abc345"; String[]arr1 = str1

随机推荐