Java对象与Json字符串的转换

JSON是一种轻量级的数据交换格式,常用于前后端的数据交流

后端 : 前端

Java对象 > JsonString

Java对象 < jsonString

使用Gson进行验证

Bean对象 Java解析Bean对象时需要将对应的'类对象'传入

  1. package com.json.bean;
  2. public class Person {
  3. private int age;
  4. private String name;
  5. public Person() {
  6. }
  7. public Person(int age, String name) {
  8. this.age = age;
  9. this.name = name;
  10. }
  11. @Override
  12. public String toString() {
  13. return "Person{" +
  14. "age=" + age +
  15. ", name='" + name + '\'' +
  16. '}';
  17. }
  18. public int getAge() {
  19. return age;
  20. }
  21. public void setAge(int age) {
  22. this.age = age;
  23. }
  24. public String getName() {
  25. return name;
  26. }
  27. public void setName(String name) {
  28. this.name = name;
  29. }
  30. }
  1. package com.json.bean;
  2. import com.google.gson.Gson;
  3. import org.junit.Test;
  4. public class BeanTrans {
  5. Gson gson = new Gson();
  6. @Test
  7. public void test(){
  8. Person p = new Person(1, "帅哥");
  9. String bean2json= gson.toJson(p);
  10. System.out.println(bean2json);
  11. Person p1 = gson.fromJson(bean2json,Person.class);
  12. System.out.println(p1);
  13. System.out.println(p1.getName());
  14. }
  15. }
  1. {"age":1,"name":"帅哥"}
  2. Person{age=1, name='帅哥'}
  3. 帅哥

List对象 List需要新建一个类继承TypeToken,然后在Java解析字符串时将TypeToken的子类的‘类对象’传入

  1. package com.json.list;
  2. import com.google.gson.reflect.TypeToken;
  3. import java.util.ArrayList;
  4. public class PersonList extends TypeToken<ArrayList<Person2>> {
  5. }
  1. package com.json.list;
  2. import com.google.gson.Gson;
  3. import com.google.gson.reflect.TypeToken;
  4. import org.junit.Test;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. public class ListTrans {
  8. Gson gson = new Gson();
  9. List<Person2> list = new ArrayList<Person2>();
  10. @Test
  11. public void test(){
  12. Person2 p1 = new Person2(1, "我好帅");
  13. Person2 p2 = new Person2(2, "你也好帅");
  14. list.add(p1);
  15. list.add(p2);
  16. String list2json = gson.toJson(list);
  17. System.out.println(list2json);
  18. ArrayList<Person2> list1 = gson.fromJson(list2json,new PersonList().getType());
  19. System.out.println(list1);
  20. System.out.println(list1.get(0).getName());
  21. }
  22. @Test
  23. public void test1(){
  24. Person2 p3 = new Person2(3, "我好帅");
  25. Person2 p4 = new Person2(4, "你也好帅");
  26. list.add(p3);
  27. list.add(p4);
  28. String list2json = gson.toJson(list);
  29. System.out.println(list2json);
  30. // 匿名内部类实现
  31. ArrayList<Person2> list1 = gson.fromJson(list2json,new TypeToken<ArrayList<Person2>>(){}.getType());
  32. System.out.println(list1);
  33. System.out.println(list1.get(0).getName());
  34. }
  35. }

Map对象 Java解析Map对象时需要先实现一个继承TypeToken的子类,然后将对应的子类'类对象'传入

  1. package com.json.map;
  2. import com.google.gson.reflect.TypeToken;
  3. import java.util.ArrayList;
  4. import java.util.Hashtable;
  5. public class PersonMap extends TypeToken<Hashtable<Integer, Person3>> {
  6. }
  1. package com.json.map;
  2. import com.google.gson.Gson;
  3. import com.google.gson.reflect.TypeToken;
  4. import org.junit.Test;
  5. import java.util.*;
  6. public class MapTrans {
  7. Gson gson = new Gson();
  8. Map<Integer,Person3> map = new Hashtable<Integer, Person3>();
  9. @Test
  10. public void test(){
  11. Person3 p5 = new Person3(1, "我好帅");
  12. Person3 p6 = new Person3(2, "你也好帅");
  13. map.put(1,p5);
  14. map.put(2,p6);
  15. String list2json = gson.toJson(map);
  16. System.out.println(list2json);
  17. Map<Integer,Person3> list1 = gson.fromJson(list2json,new PersonMap().getType());
  18. System.out.println(list1);
  19. System.out.println(list1.get(1));
  20. }
  21. @Test
  22. public void test1(){
  23. Person3 p5 = new Person3(3, "我好帅");
  24. Person3 p6 = new Person3(4, "你也好帅");
  25. map.put(1,p5);
  26. map.put(2,p6);
  27. String map2json = gson.toJson(map);
  28. System.out.println(map2json);
  29. // 匿名内部类实现
  30. Map<Integer,Person3> map2 = gson.fromJson(map2json,new TypeToken<Hashtable<Integer, Person3>>(){}.getType());
  31. System.out.println(map2);
  32. System.out.println(map2.get(1));
  33. }
  34. }

Java对象与Json字符串的转换的更多相关文章

  1. Java基础97 json插件的使用(java对象和json字符串对象之间的转换)

    1.需要用到的包 2.实例 实体类 people package com.shore.entity; /** * @author DSHORE/2019-4-19 * */ public class ...

  2. java对象与json字符串的互相转换

    java对象与json字符串的互相转换 1.采用 net.sf.json.JSONObject maven依赖包: <dependency> <groupId>net.sf.j ...

  3. Java实现JSONObject对象与Json字符串互相转换

    Java实现JSONObject对象与Json字符串互相转换 JSONObject 转 JSON 字符串 Java代码: JSONObject jsonObject = new JSONObject( ...

  4. java对象与Json字符串之间的转化(fastjson)

    1. 首先引入jar包 在pom.xml文件里加入下面依赖: <dependency> <groupId>com.alibaba</groupId> <art ...

  5. Java对象、Json、Xml转换工具Jackson使用

    在Java项目中將一个对象转换成一段Json格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson.JSON-lib.Jackson等等.本文主要介绍Jackson的使用,Jacks ...

  6. java对象与Json字符串之间的转化

    public class Test { public static void main(String[] args) { // 实现java对象与Json字符串之间的转化 // 1. Person对象 ...

  7. JackSon将java对象转换为JSON字符串

    JackSon可以将java对象转换为JSON字符串,步骤如下: 1.导入JackSon 的jar包 2.创建ObjectMapper对象 3.使用ObjectMapper对象的writeValueA ...

  8. (后端)JackSon将java对象转换为JSON字符串(转)

    转载小金金金丶园友: JackSon可以将java对象转换为JSON字符串,步骤如下: 1.导入JackSon 的jar包 2.创建ObjectMapper对象 3.使用ObjectMapper对象的 ...

  9. C# 对象与JSON字符串互相转换的三种方式

    C# 对象与JSON字符串互相转换的三种方式 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换, ...

随机推荐

  1. .net core 部署到windows服务上的方法

    前言 Net core 项目部门在Windows有很多种方式,大致有以下几种, dotnet 命令, iis(windowshosts), 一些开源的应用容器(docker ) 基于一些exe 程序, ...

  2. Ubuntu18.04美化MacOS(新更grub界面美化)

    写在前面的话: 在美化过程中大多数资源来自境外网站,下载时速度特别慢,写这篇博客一是为了给读者看,也是为了自己保存资源并记录ubuntu18.04的使用,避免你们或是自己以后再花费大量时间去百度方法和 ...

  3. [bzoj1690] [Usaco2007 Dec] 奶牛的旅行 (最大比率环)

    题目 作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天.旅行的前夜,奶牛们在兴奋地讨论如何最好地享受这难得的闲暇. 很幸运地,奶牛们找到了一张详细的城市地图,上面标注了 ...

  4. 键盘侠Linux干货| ELK(Elasticsearch + Logstash + Kibana) 搭建教程

    前言 Elasticsearch + Logstash + Kibana(ELK)是一套开源的日志管理方案,分析网站的访问情况时我们一般会借助 Google / 百度 / CNZZ 等方式嵌入 JS ...

  5. Jmeter系列(27)- 详解正则提取器

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 有了 JSON 提取器为啥还要用正则提 ...

  6. java web20套项目

    http://shenghuo.lshou.com/c4154/t5bdbcc98b9a9.html

  7. Jmeter系列(35)- 使用 ServerAgent 监控服务器

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 做性能测试,监控服务器资源指标是 ...

  8. egret canvas的style

    <canvas width="1920" height="1080" style=" cursor:auto;//鼠标样式 positon:ob ...

  9. C++多种方法枚举串口号

    部分方式没结果,思路应该是没错. //7. std::cout << "M8: SetupDiGetClassDevs " << std::endl; // ...

  10. return zero,or ,return non-zero

    it may return a value to its caller, which is in effect the environment in which the program was exe ...