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 相互转换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2020-05-14

详解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

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

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实现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中Json字符串直接转换为对象的方法(包括多层List集合)

使用到的类:net.sf.json.JSONObject 使用JSON时,除了要导入JSON网站上面下载的json-lib-2.2-jdk15.jar包之外,还必须有其它几个依赖包:commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph.jar,morph-1.0.1.jar 下面是例子代码: // JSON转换 JSONObject jsonObj = JSONObject.fromObject(jsonStr

Json字符串与Object、List、Map的互转工具类

package com.cq2022.zago.base.util; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.StringWriter; import java.util.List; import java.util.Map; import org.codehaus.jackson.JsonFactory; import org.codehau

Java遍历json字符串取值的实例

java遍历json字符串,取得相应KV值时,各种麻烦,比如将json中的list取出来转为JSONArray,再将list中的object转化为map,再取值(之前的做法),仙子啊通过阿里的fastjson,可以很方便的直接将str转化为JSONArray,再将里面的object强转为JSONObject,然后再通过obj.getInteger("key")和obj.getString("key")等取值. JSONArray json = (JSONArray)

使用Java进行Json数据的解析(对象数组的相互嵌套)

这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下! 假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相关工具美化后的结果 { "translation": [ "爱" ], "basic": { "us-phonetic": "lʌv", "phonetic": "lʌv"

自定义实现Json字符串向C#对象转变的方法

这里使用Atrribute的方式实现了Json字符串向C#对象的转变.因为功能局限,此版本只是针对于Json字符串,如"response":"Hello","id":21231513,"result":100,"msg":"OK."; 而不是Json数组.这里的Atrribute是作用在属性上,像NHibernate中的Atrribute一样,是在运行时通过反射来获取这个属性对应于Jso

JSON PHP中,Json字符串反序列化成对象/数组的方法

如下所示: <?php //php反编码解析json信息 //json_decode(json字符串); $city = array('shandong'=>'jinan','henan'=>'zhengzhou','hebei'=>'shijiazhuang'); $jn_city = json_encode($city); //反编码json $fan_city = json_decode($jn_city,false);//第二个参数false则返回object类型,fals

Java实现的时间戳与date对象相互转换功能示例

本文实例讲述了Java实现的时间戳与date对象相互转换功能.分享给大家供大家参考,具体如下: 一.日期转换为时间戳 public long getTimestamp() throws ParseException{ Date date1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss") .parse("2009/12/11 00:00:00"); Date date2 = new SimpleDateFormat(&quo

Java中JSON字符串与java对象的互换实例详解

在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好,下面先看下JSON的格式, JSON可以有两种格式,一种是对象格式的,另一种是数组对象, {"name":"JSON","address":"北京市西城区","age":25}//JSON的对象格式的字符串 [

Json对象与Json字符串互转(4种转换方式)

1>jQuery插件支持的转换方式: 复制代码 代码如下: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2>浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器: 复制代码 代码如下: JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON.stringify(jsonobj); //可以将json对象转换