0 0

jackson 字符串转换成List集合的问题请教5

我使用了jackson先将一个List集合对象转换成json字符串后,再将json字符串转成List集合出了问题 ,报错信息如下:
Exception in thread "main" org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class com.mailbill.HDataA]: can not instantiate from JSON object (need to add/enable type information?)
 at [Source: java.io.StringReader@147917a; line: 1, column: 3]
	at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
	at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObjectUsingNonDefault(BeanDeserializer.java:746)
	at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:683)
	at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)
	at org.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:217)
	at org.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:194)
	at org.codehaus.jackson.map.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:30)
	at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2732)
	at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1877)
	at com.mailbill.datacore.util.JsonUtil.jacksonToCollection(JsonUtil.java:315)
	at com.mailbill.TestJson.main(TestJson.java:27)


我的List集合中的对象里有一个属性也是一个集合,代码如下:
HData.java
package com.mailbill;

import java.util.List;

public class HDataA {

	
	private String name;
	
	private String code;
	
	private List<HDataB> dataBList ;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

	public List<HDataB> getDataBList() {
		return dataBList;
	}

	public void setDataBList(List<HDataB> dataBList) {
		this.dataBList = dataBList;
	}

	public HDataA(String name, String code, List<HDataB> dataBList) {
		super();
		this.name = name;
		this.code = code;
		this.dataBList = dataBList;
	}
	
	
}



HDataB.java:
package com.mailbill;

public class HDataB {

	
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public HDataB(String name) {
		super();
		this.name = name;
	}
	
	
}



我的测试类:
package com.mailbill;

import java.util.ArrayList;
import java.util.List;

import org.aspectj.apache.bcel.generic.ARRAYLENGTH;

import com.mailbill.datacore.util.JsonUtil;

public class TestJson {

	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		
		List<HDataA> dataAlist = new ArrayList<HDataA>();
		List<HDataB> dataBList = new ArrayList<HDataB>();
		dataBList.add(new HDataB("hehe"));
		dataBList.add(new HDataB("xixi"));
		dataAlist.add(new HDataA("nidaye",
				"woqu", dataBList));
		String str = JsonUtil.objectToJackson(dataAlist);
		System.out.println(str);
		dataAlist = JsonUtil.jacksonToCollection(str, List.class, HDataA.class);
		if(dataAlist ==null){
			System.out.println(" dataAlist is null");
		}else{
			System.out.println(" ok ");
		}
	}

}



JsonUtion.java:


private static ObjectMapper jacksonMapper = new ObjectMapper();

public static String objectToJackson(Object obj) throws Exception {
		return jacksonMapper.writeValueAsString(obj);
	}
public static <T> T jacksonToCollection(String src,Class<?> collectionClass, Class<?>... valueType)
			throws Exception {
		JavaType javaType= jacksonMapper.getTypeFactory().constructParametricType(collectionClass, valueType); 
		return (T)jacksonMapper.readValue(src, javaType);
	}


不知道jackson如何对这类集合进行转换?
2013年6月13日 14:09

2个答案 按时间排序 按投票排序

0 0

采纳的答案

加一句即可
        objectMapper.enableDefaultTyping();

2013年6月13日 14:13
0 0

是需要给HDataA提供个无参数的构建器吧。

2013年6月13日 15:24

相关推荐

    jackson 对象json字符串数组集合互转

    在标题“Jackson对象json字符串数组集合互转”中,提到的核心概念是Jackson如何处理JSON字符串与Java集合(如List、Array等)之间的转换。下面将详细解释这一过程以及涉及的相关知识点。 1. JSON与Java对象映射: ...

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

    标题和描述提及的是将JSON字符串转换为Java对象,特别是涉及多层嵌套和List集合的情况。这在处理复杂数据结构时非常常见,比如服务器返回的响应可能包含嵌套的对象和数组。下面我们将详细介绍如何使用Jackson库来...

    json字符串转化为list泛型

    在Java编程中,我们经常需要将JSON格式的数据转换为Java对象,这通常涉及到将JSON字符串转化为List泛型。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和...

    Jackson 框架 json 到 复杂 list 的转换

    在JSON到Java对象的转换中,Jackson允许我们将JSON字符串解析成Java对象,包括列表(List)和映射(Map)。对于复杂列表,这意味着列表中的每个元素可能是一个复杂的Java对象,包含了嵌套的对象或者列表。例如,一个用户...

    json字符串转成 Map/List

    在Java中,将JSON字符串转换为Map或List是常见的操作,这在处理服务器返回的数据或者进行数据序列化时非常有用。 JSON字符串的结构主要包括对象(键值对的集合,用花括号{}包围)和数组(有序元素的集合,用方括号...

    json字符串转换插件

    在Java开发中,处理JSON字符串通常需要借助第三方库,如Gson、Jackson或Fastjson等。本篇将深入探讨“json字符串转换插件”,重点介绍如何在项目中引入和使用这类工具。 首先,我们来理解JSON的基本结构。JSON基于...

    java的Jackson将json字符串转换成泛型List

    本篇文章将深入探讨如何使用Jackson将JSON字符串转换为泛型的`List`。 首先,Jackson的核心组件是`ObjectMapper`,它是一个高度可配置的对象,能够执行序列化(对象到JSON)和反序列化(JSON到对象)。在简单的场景...

    json转换工具jackson

    - **序列化**: Jackson 提供了 `ObjectMapper` 类,通过 `writeValueAsString()` 或 `writeValueAsBytes()` 方法可以将Java对象转换成JSON字符串或字节数组。 - **反序列化**: 使用 `readValue()` 方法,可以将...

    将string类型xml字符串转为json字符串

    本篇文章将详细讲解如何将string类型的XML字符串转换为JSON字符串,并介绍相关的技术知识。 首先,理解XML和JSON的基本结构是至关重要的。XML是一种树形结构的标记语言,通过标签来定义元素和属性,例如: ```xml ...

    jackson json 转 map 数值科学计数法的问题解决.docx

    下面是一个示例代码,演示如何使用 ObjectMapper 将 JSON 字符串转换为 Map,同时启用 USE_BIG_DECIMAL_FOR_FLOATS 选项以解决科学计数法的问题: ```java ObjectMapper mapper = new ObjectMapper(); mapper....

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

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

    json字符串实体bean或者List互转(gson和jackson,支持泛型)

    json字符串实体bean或者List互转(gson和jackson,支持泛型),支持json的格式化,所需要的包在代码也有说明。还有少的可以告知我,谢谢

    java对象转换为json字符串或字符串数组

    在Java开发中,将Java对象转换为JSON字符串或字符串数组是一项常见的任务,特别是在与前端交互、数据存储或者网络传输时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也...

    Jackson 框架JSON、XML、List、Map直接相互转换

    NULL 博文链接:https://bugyun.iteye.com/blog/2278997

    ajax json java 用法 json 将List、Object转换为Json格式字符串

    本文将详细介绍如何在 Java 中将 List 和 Object 类型的数据转换成 JSON 格式字符串,并通过一个具体的示例来演示整个过程。 #### 一、JSON 的基本概念 JSON 是一种数据交换格式,它基于 JavaScript 的语法但独立...

    json转为list 涉及 java springboot

    接下来,我们可以使用 Jackson 的 `ObjectMapper` 来将 JSON 字符串转换为 List: ```java ObjectMapper mapper = new ObjectMapper(); String jsonStr = "[{\"name\":\"John\",\"age\":30},{\"name\":\"Jane\",\...

    将JSON字符串转换成Map对象的方法

    //将json字符串转换成jsonObject JSONObject jsonObject = JSONObject.fromObject(object); Iterator&lt;String&gt; ite = jsonObject.keys(); //遍历jsonObject数据,添加到Map对象 while(ite.hasNext()){ String ...

    利用jackson包进行json字符串与pojo类之间的转换源代码

    本篇将详细介绍如何利用Jackson包进行JSON字符串与POJO(Plain Old Java Object)类之间的转换,并探讨相关源码。 Jackson库主要包括三个核心模块:`jackson-core`、`jackson-annotations`和`jackson-databind`。在...

    List转换为List

    4. **输出JSON字符串**:最后通过JsonGenerator写出JSON格式的字符串。 #### 示例代码: ```java ObjectMapper mapper = new ObjectMapper(); StringWriter writer = new StringWriter(); try (JsonGenerator ...

    sp缓存list集合工具类

    2. **从SP加载List**:根据指定的key从SharedPreferences中获取存储的JSON字符串,再通过JSON解析库(如Gson或Jackson)将字符串反序列化回List。 3. **删除List缓存**:根据key从SharedPreferences中移除对应的...

Global site tag (gtag.js) - Google Analytics