原文地址: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);        
    }

}

 

posted on 2015-06-19 15:51  一天不进步,就是退步  阅读(533)  评论(0编辑  收藏  举报