`

Jackson学习二之集合类对象与JSON互相转化

阅读更多

本篇主要演示如何使用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);		
	}

}

 

可见以Key-Value形式的JSON字符串,都可以直接使用Map成功读取出来

 

 

 

  本文出自"lijingshou"博客,转载请务必保留此出处http://lijingshou.iteye.com/blog/2003059

分享到:
评论

相关推荐

    json 转化工具类

    1. **Jackson库**:Jackson是Java中最常用的JSON库之一,它提供了`ObjectMapper`类来实现JSON与Java对象的转换。例如,可以使用`readValue()`方法将JSON字符串转化为Java对象,`writeValueAsString()`方法将Java对象...

    Java对象与Json之间的互相转换的jar包

    这个"Java对象与Json之间的互相转换的jar包"正是提供了这样的功能。 这个jar包可能包含了如Jackson、Gson、Fastjson等流行的Java JSON库,它们各自提供了丰富的API来方便开发者进行对象与JSON的转换。 1. Jackson...

    解析Json字符串直接转换为对象(包括多层List集合 嵌套)所用jar包

    现在,我们可以使用Jackson库的`ObjectMapper`类将JSON字符串转换为Java对象: ```java import com.fasterxml.jackson.databind.ObjectMapper; public class JsonParser { public static void main(String[] args...

    ResultSet转化为json,json转化为List

    接下来,我们看看如何将JSON转化为List。假设我们已经有了一个JSON字符串,想要将其转换为List&lt;User&gt;: 1. 准备JSON字符串: ```java String jsonString = "[{\"name\":\"Alice\", \"age\":30}, {\"name\":\"Bob\...

    JAVA对象转化为JSON

    在Java开发中,将Java对象转化为JSON(JavaScript Object Notation)格式是常见的需求,尤其是在Web服务和前后端数据交互中。JSON是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。JSON...

    java把list集合转化为json所需的jar包

    在Java开发中,将List集合转化为JSON格式是常见的数据处理需求。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也方便机器解析和生成。在Java中,我们可以借助第三方库来...

    将集合转换为Json的相关jar包

    通过引入如Jackson、Gson和Fastjson这样的库,开发者能够轻松地处理JSON与Java集合间的相互转换,从而提升应用程序的性能和用户体验。在实际项目中,选择合适的库应考虑性能、易用性和社区支持等因素。

    ssh中将含有级联对象的list转化为json

    总结,SSH框架中将含有级联对象或集合的list转化为JSON,主要涉及Java对象到JSON的转换、EasyUI的数据格式要求以及与前端的数据交互。通过引入和使用Jackson库,我们可以方便地完成这一过程。同时,确保前端能够正确...

    springmvc-jackson-jar包集合

    《Spring MVC与Jackson:构建高效JSON处理》 在现代Web应用开发中,数据交换往往以JSON格式为主,尤其是在前后端分离的设计模式下。Spring MVC作为Java领域的主流MVC框架,提供了一种优雅的方式来处理HTTP请求和...

    使用json-lib将java对象转换成json字符串

    标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...

    SSM框架json使用jackson

    2. **Service层对象转换**:在业务逻辑中,我们可能会用到`ObjectMapper`来手动转换对象,比如将数据库查询结果转化为JSON格式返回给前端。 3. **配置优化**:在Spring的配置文件中,我们可以对Jackson进行定制,...

    jackson2.7.1所有Jar包,SSM返回前端Json数据

    7. **类型绑定**:Jackson的强项之一是类型绑定,它能够处理复杂的数据结构,如嵌套的对象和集合,以及泛型类型,无需额外的适配器或转换器。 8. **性能优化**:Jackson允许进行性能调优,如开启流式处理、启用二...

    JSON字符串和java对象的相互转换

    在Java开发中,JSON字符串与Java对象之间的相互转换是常见的操作,特别是在网络通信、数据存储以及API接口设计等领域。 JSON字符串转Java对象: 在Java中,我们通常使用第三方库如Jackson、Gson、Fastjson等来实现...

    java对象List,Map转json格式

    本篇文章将深入探讨如何将Java中的List和Map对象转化为JSON格式,并涉及与AJAX交互的相关知识。 1. **Java JSON库**: 在Java中,我们可以使用多种库来实现对象到JSON的转换,如Jackson、Gson、Fastjson等。这里以...

    json字符串转成 Map/List

    Jackson是另一个流行的JSON处理库,提供了`ObjectMapper`类来实现JSON与Java对象之间的转换。 ```java import com.fasterxml.jackson.databind.ObjectMapper; import java.util.Map; String jsonString = "{\...

    jackson-core-asl-1.9.13+jackson-mapper-asl-1.9.13札包

    这个模块提供了ObjectMapper类,它是Jackson库中的核心类,负责实现Java对象与JSON之间的相互转换。通过ObjectMapper,我们可以方便地实现POJO(Plain Old Java Object)到JSON字符串的序列化,以及JSON字符串到POJO...

    json-lib 解析json串工具类

    通过`JsonParser.parse(String json)`方法,你可以将JSON格式的文本转化为`JsonNode`对象,然后进一步遍历或操作JSON结构。 3. **生成JSON字符串** 对于Java对象,可以使用`JsonSerializer`将其转换为JSON字符串。...

    jackson-annotations.jar jackson-core.jar jackson-databind.jar

    此外,`ObjectMapper`类是Jackson的核心类,它结合了`JsonParser`和`JsonGenerator`的功能,提供了一种简洁的方式来将Java对象与JSON数据进行映射。 3. **jackson-databind.jar**: 这是Jackson的数据绑定模块,提供...

    ssh将list自定义转化为json

    在SSH(Spring、Struts2、Hibernate)框架中,我们经常需要处理各种数据结构,比如集合List,并将这些数据转化为JSON格式以便于前端展示或进行API交互。JSON(JavaScript Object Notation)是一种轻量级的数据交换...

    json串解析

    - 解析JSON:使用Jackson或Gson的API将JSON字符串转化为Java对象。 - 使用数据:Java对象可以直接在业务逻辑中使用。 - 序列化:如果需要将数据回传,可以将Java对象再转化为JSON字符串。 4. JSON特殊处理: - ...

Global site tag (gtag.js) - Google Analytics