zoukankan      html  css  js  c++  java
  • Jackson学习二之集合类对象与JSON互相转化--转载

    原文地址:http://lijingshou.iteye.com/blog/2003059

    本篇主要演示如何使用Jackson对List, Map和数组与JSON互相转换.

    package com.jingshou.jackson;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.jingshou.pojo.Student;
    
    public class JacksonTest2 {
    
        public static void main(String[] args) throws IOException {
            Student student1 = new Student();  
            student1.setId(5237);
            student1.setName("jingshou");
            student1.setBirthDay(new Date());
            
            Student student3 = new Student();  
            student3.setId(5117);  
            student3.setName("saiya");  
            student3.setBirthDay(new Date());  
            
            ObjectMapper mapper = new ObjectMapper();
              
            //Convert between List and JSON
            List<Student> stuList = new ArrayList<Student>();
            stuList.add(student1);
            stuList.add(student3);
            String jsonfromList = mapper.writeValueAsString(stuList);
            System.out.println(jsonfromList);
            
            //List Type is not required here.
            List stuList2 = mapper.readValue(jsonfromList, List.class);
            System.out.println(stuList2);    
            System.out.println("************************************");
            
            //Convert Map to JSON
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("studentList", stuList);
            map.put("class", "ClassName");
            String jsonfromMap =  mapper.writeValueAsString(map);
            System.out.println(jsonfromMap);
            
            Map map2 =  mapper.readValue(jsonfromMap, Map.class);
            System.out.println(map2);
            System.out.println(map2.get("studentList"));    
            System.out.println("************************************");   
            
            //Convert Array to JSON
            Student[] stuArr = {student1, student3};
            String jsonfromArr =  mapper.writeValueAsString(stuArr);
            System.out.println(jsonfromArr); 
            Student[] stuArr2 =  mapper.readValue(jsonfromArr, Student[].class);
            System.out.println(Arrays.toString(stuArr2));
        }
    
    }

    运行结果:

    [{"id":5237,"name":"jingshou","birthDay":1389528275987},{"id":5117,"name":"saiya","birthDay":1389528275987}]
    [{id=5237, name=jingshou, birthDay=1389528275987}, {id=5117, name=saiya, birthDay=1389528275987}]
    ************************************
    {"class":"ClassName","studentList":[{"id":5237,"name":"jingshou","birthDay":1389528275987},{"id":5117,"name":"saiya","birthDay":1389528275987}]}
    {class=ClassName, studentList=[{id=5237, name=jingshou, birthDay=1389528275987}, {id=5117, name=saiya, birthDay=1389528275987}]}
    [{id=5237, name=jingshou, birthDay=1389528275987}, {id=5117, name=saiya, birthDay=1389528275987}]
    ************************************
    [{"id":5237,"name":"jingshou","birthDay":1389528275987},{"id":5117,"name":"saiya","birthDay":1389528275987}]
    [Student [birthDay=Sun Jan 12 20:04:35 CST 2014, id=5237, name=jingshou], Student [birthDay=Sun Jan 12 20:04:35 CST 2014, id=5117, name=saiya]]

    再举一例实际应用:

    小米网站注册页面输入邮件地址后,服务器提交的Ajax请求是:

    https://account.xiaomi.com/pass/user@externalIdBinded?externalId=9999999%40qq.com&type=EM

    服务器的返回是: &&&START&&&{"result":"ok","description":"成功","data":{"userId":-1},"code":0}

    我们可以尝试用Map去读取后面那一段JSON

    package com.jingshou.jackson;
    
    import java.io.IOException;
    import java.util.Map;
    
    import com.fasterxml.jackson.core.JsonParseException;
    import com.fasterxml.jackson.databind.JsonMappingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    public class JacksonTest3 {
    
        public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
            String json = "{"result":"ok","description":"成功","data":{"userId":-1},"code":0}";
            ObjectMapper mapper = new ObjectMapper();
            Map map = mapper.readValue(json, Map.class);
              //输出 {result=ok, description=成功, data={userId=-1}, code=0}
            System.out.println(map);
              //输出{userId=-1}
            Map dataMap = (Map) map.get("data");
            System.out.println(dataMap);        
        }
    
    }
  • 相关阅读:
    redis的安装
    thinkphp5学习
    php数组排序和查找的算法
    phprpc的简单使用
    apache学习教程
    mysql的存储过程,函数,事件,权限,触发器,事务,锁,视图,导入导出
    php设计模式八-----装饰器模式
    php设计模式七 ---组合模式
    64bit ubuntu14.04编译PlatinumKit出现的arm-linux-androideabi-g++: not found错误解决方法
    TS相关知识点
  • 原文地址:https://www.cnblogs.com/davidwang456/p/4588925.html
Copyright © 2011-2022 走看看