java中对象转json,json转list,json转map

在IDEA中的springboot项目里写的一个测试例子,新建User类,四个字段,Long id , String password,String userName,int age; 以及带参构造,toString方法

在pom.xml中添加 net.sf.json-lib  依赖:

1 <!-- 对象转json依赖包 -->
2         <!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
3         <dependency>
4             <groupId>net.sf.json-lib</groupId>
5             <artifactId>json-lib</artifactId>
6             <version>2.4</version>
7             <!--不加下面这一项会报错,是因为json-lib支持版本是jdk1.5,所以要指定下版本-->
8             <classifier>jdk15</classifier>
9         </dependency>

json转换测试类:

  1 package com.lch.springboot04.jsonparse;
  2
  3 import com.lch.springboot04.domain.User;
  4 import net.sf.json.JSONArray;
  5 import net.sf.json.JSONObject;
  6
  7 import java.util.*;
  8
  9 /**
 10  * 对象转换为json数据测试,通过net.sf.json-lib.jar
 11  */
 12 public class JsonParse {
 13
 14     public static void main(String[] args) {
 15         /**
 16          *  object 转为json数组 :数组,对象,map,list,list<Map<String,Object>> 都可以;
 17          *  object 转为json字符串:只有 自定义对象  和 map可以转换,其他都不能这样转;
 18          */
 19
 20         String[] arr = {"a", "b", "c"};
 21         System.out.println("string数组转为json数组" + JSONArray.fromObject(arr)); //["a","b","c"]
 22 //        System.out.println("string数组转为json字符串"+ JSONObject.fromObject(arr).toString()); //无法转换:‘object‘ is an array. Use JSONArray instead
 23
 24         //java自定义对象转json
 25         User jack = new User("123", "jack", 18);
 26         System.out.println("Java对象转为json数组" + JSONArray.fromObject(jack));
 27         //结果:[{"age":18,"id":0,"password":"123","userName":"jack"}]
 28         System.out.println("Java对象转为json字符串" + JSONObject.fromObject(jack).toString());
 29         //结果:{"age":18,"id":0,"password":"123","userName":"jack"}
 30
 31         //list转json
 32         User tom = new User("456", "tom", 20);
 33         List<User> userList = new ArrayList<>();
 34         userList.add(jack);
 35         userList.add(tom);
 36         System.out.println("list转为json数组" + JSONArray.fromObject(userList));
 37 //        结果:list转为json数组[{"age":18,"id":0,"password":"123","userName":"jack"},{"age":20,"id":0,"password":"456","userName":"tom"}]
 38 //        System.out.println("list转为json字符串"+ JSONObject.fromObject(userList).toString()); //不能转为json字符串
 39
 40 //        list<Map<String,Object>> 转json
 41         List<Map<String, Object>> mapList = new ArrayList();
 42         Map<String, Object> m1 = new HashMap<String, Object>();
 43         m1.put("jack", jack);
 44         m1.put("tom", tom);
 45         Map<String, Object> m2 = new HashMap<String, Object>();
 46         m2.put("alex", new User("789", "alex", 20));
 47         mapList.add(m1);
 48         mapList.add(m2);
 49         System.out.println("map转json数组" + JSONArray.fromObject(m2));
 50 //        转换结果:[{"alex":{"age":20,"id":0,"password":"789","userName":"alex"}}]
 51         System.out.println("map转json字符串" + JSONObject.fromObject(m2));
 52         //结果:{"alex":{"age":20,"id":0,"password":"789","userName":"alex"}}
 53         System.out.println(" list<Map<String,Object>> 转json数组" + JSONArray.fromObject(mapList));
 54 // 结果:[{"tom":{"age":20,"id":0,"password":"456","userName":"tom"},"jack":{"age":18,"id":0,"password":"123","userName":"jack"}},{"alex":{"age":20,"id":0,"password":"789","userName":"alex"}}]
 55 //        System.out.println(" list<Map<String,Object>> 转json字符串"+JSONObject.fromObject(mapList));//不能转,‘object‘ is an array. Use JSONArray instead
 56
 57         /**
 58          * json字符串转map
 59          */
 60      /*   String jsonStr = "{\"alex\":{\"age\":20,\"id\":0,\"password\":\"789\",\"userName\":\"alex\"}}";
 61         Map<String,Object> map = jsonToMap(JSONObject.fromObject(jsonStr).get("alex").toString());
 62         System.out.println("json字符串转map:"+map.get("age"));*/
 63 //        {"total":2,"items":[{"age":15,"id":1,"name":"jack"},{"age":16,"id":2,"name":"tom"}]}
 64         String jsonStr2 = "{\"total\":2,\"items\":[{\"age\":15,\"id\":1,\"userName\":\"jack\"},{\"age\":16,\"id\":2,\"userName\":\"tom\"}]}";
 65         Map<String, Object> stringObjectMap = jsonToMap(jsonStr2);
 66         for (Map.Entry<String, Object> entry : stringObjectMap.entrySet()) {
 67             System.out.println(entry.getKey() + "--" + entry.getValue());
 68         }
 69         /**输出结果:
 70          * total--2
 71          items--[{"age":15,"id":1,"userName":"jack"},{"age":16,"id":2,"userName":"tom"}]
 72          */
 73
 74 //        jsonstr转list,list中存放Java Bean
 75         String jsonStr3 = JSONObject.fromObject(jsonStr2).get("items").toString();
 76         System.out.println("jsonStr3=" + jsonStr3);
 77         List list = jsonStr2ObjectList(jsonStr3, User.class);
 78         for (Object u : list) {
 79             System.out.println(u);
 80         }
 81         /**
 82          * 输出User{id=1, password=‘null‘, userName=‘jack‘, age=15}
 83          User{id=2, password=‘null‘, userName=‘tom‘, age=16}
 84          */
 85
 86     }
 87
 88     /**
 89      * json字符串转map
 90      *
 91      * @param jsonStr
 92      * @return
 93      */
 94     public static Map<String, Object> jsonToMap(String jsonStr) {
 95         JSONObject jsonObject = JSONObject.fromObject(jsonStr); //首先转换为 JSONObject
 96         Iterator<String> nameItr = jsonObject.keys();//获取jsonObject的keySet()的迭代器
 97         String key;//接收key值
 98         Map<String, Object> outMap = new HashMap<>(); //存放转换结果
 99         while (nameItr.hasNext()) {
100             key = nameItr.next();
101             outMap.put(key, jsonObject.get(key));
102         }
103         return outMap;
104     }
105
106     /**
107      * JSONObject类中keys()方法默认返回jsonObject的keyset的迭代器
108      * public Iterator keys() {
109      * this.verifyIsNull();
110      * return this.keySet().iterator();
111      * }
112      */
113
114     /** json转list,list中存放JavaBean
115      * @param jsonStr 要转换的json字符串
116      * @param clazz   javaBean的Class对象
117      * @return
118      */
119     public static List jsonStr2ObjectList(String jsonStr, Class clazz) {
120         JSONArray array = JSONArray.fromObject(jsonStr);
121         List list = new ArrayList();
122         for (Iterator itr = array.iterator(); itr.hasNext(); ) {
123             JSONObject jsonObject = (JSONObject) itr.next();
124             //取出json字符串中的一个子字符串,转换为指定类型的JavaBean
125             Object bean = JSONObject.toBean(jsonObject, clazz);
126             list.add(bean);
127         }
128         return list;
129     }
130 }

结果:

原文地址:https://www.cnblogs.com/enjoyjava/p/9158672.html

时间: 2024-11-09 06:26:08

java中对象转json,json转list,json转map的相关文章

Java中对象、对象引用、堆、栈、值传递以及引用传递的详细解释

Java中对象.对象引用.堆.栈.值传递以及引用传递的详细解释 1.对象和对象引用的区别: (1).对象: 万物皆对象.对象是类的实例.在Java中new是用来在堆上创建对象用的.一个对象可以被多个引用所指向. (2).对象引用: 类似于C++中的地址.通过对象引用可以找到对象.一个引用可以指向多个对象.操纵的标识符实际上是指向对象的引用. 就像:对象存放在屋子里,对象的引用就相当于屋子的钥匙. 2.值传递和引用传递的区别: (1).值传递:传递的是值的拷贝.也就是说传递后就不互相关了. (2)

java中对象多态时成员变量,普通成员函数及静态成员函数的调用情况

/* 样例1: class Parent{ int num = 3; } class Child extends Parent{ int num = 4; } */ /* 样例2: class Parent{ } class Child extends Parent{ int num = 4; } */ /* 样例3: class Parent{ void show(){ System.out.println("Parent Show!"); } } class Child exten

java中对象的初始化过程

class Parent{ int num = 8;// ->3 Parent(){ //super(); // ->2 //显示初始化 // ->3 //构造代码段 // ->4 show(); // ->5 } {// ->4 System.out.println("Parent constructor code run->"); } public void show(){//被覆盖 System.out.println("num

面试题:Java中对象序列化接口(Serializable)的意义

Serializable接口是一个里面什么都没有的接口 它的源代码是public interface Serializable{},即什么都没有. 如果一个接口里面什么内容都没有,那么这个接口是一个标识接口,比如,一个学生遇到一个问题,排错排了几天也没解决,此时,她举手了(示意我去帮他解决),然后我过去,帮他解决了,那么这个举手其实就是一个标识,自己不能解决的问题标示我去帮他解决,在Java中的这个Serializable接口是给JVM看的,告诉JVM,我不做这个类的序列化了,你(JVM)给我序

java中对象和对象的引用

在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然. 方法/步骤 1.何谓对象? 在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一段原话: “按照通俗的说法,每个对象都是某个类(class)的一个实例(instance),这里,‘类’就是‘类型’的同义词.” 从这一句话就可

JAVA中对象创建和初始化过程

1.Java中的数据类型 Java中有3个数据类型:基本数据类型(在Java中,boolean.byte.short.int.long.char.float.double这八种是基本数据类型).引用类型和null类型.其中,引用类型包括类类型(含数组).接口类型. 下列语句声明了一些变量: 以下是引用片段: int k ;  A a; //a是A数据类型的对象变量名.  B b1,b2,-,b10000;// 假定B是抽象类或接口.  String s; 注意:从数据类型与变量的角度看,基本数据

java中对象的数据结构(待补充)

.java中的堆栈: 如  Student student = new Student(): 在这里对象就是new 出来的student ,这个对象被存放在堆内存里面,而student是这个对象的引用如下 一般java程序运行时会涉及到如下几个存储区域: 程序计数器: 可以看做是当前所执行字节码的行号指示器.通常是改变计数器字节码的值来抉择下一步索要执行的代码,程序员不直接控制. 寄存器: 在程序中我们无法直接控制,由编译器管理. 栈区:   1,每个线程包含一个栈区,栈中只保存基础数据类型的对

《Java中对象创建过程》

http://jzinfo.iteye.com/blog/620045具体问题:java中使用new创建一个对象的时候,详细的过程是怎么样的. Java中每个Java代码要能执行首先会编译成一个class的字节码文件.然后利用类装载器装载进入JVM然后才能被执行. 1. 所有的类都是在对其第一次使用时,动态加载到JVM中.当首次创建类型为Dog的对象时,或者Dog类的静态方法,静态属性域首次被访问时,java解释器查找classPath,定位到Dog.class文件 2. 载入Dog.class

Java中对象的三种状态

Java中的对象的三种状态是和垃圾回收紧密相关的,因此有必要深究. 状态一:可触及态:从根节点开始,可以搜索到这个对象,也就是可以访问到这个对象,也有人将其称为可达状态. 状态二:可复活态:从根节点开始,无论如何都不能访问到这个对象,也就是说这个对象的所有引用都被释放,没有任何变量引用该对象了, 但是该对象有可能在finalize()方法中再次被引用,从而复活. 状态三:不可触及态:对象的所有引用都被释放了,并且在对象的finalize()方法中没有复活,这样的话该对象就是不可触及状态. 对于状