0 0

如何使用jackson反序列化json到对象0

{"indexs":[{"id":"6310_2","createTime":1359424596001,"indexFields":[{"name":"keyword_score","type":1,"analyzed":true,"highlight":true,"strValue":"2.1781344","longValue":0,"intValue":0},{"name":"object_id","type":1,"analyzed":true,"highlight":true,"strValue":"6310","longValue":0,"intValue":0},{"name":"object_type","type":1,"analyzed":true,"highlight":true,"strValue":"2","longValue":0,"intValue":0},{"name":"user_id","type":1,"analyzed":true,"highlight":true,"strValue":"657","longValue":0,"intValue":0},{"name":"user_name","type":1,"analyzed":true,"highlight":true,"strValue":"好书推荐","longValue":0,"intValue":0},{"name":"publish_time","type":1,"analyzed":true,"highlight":true,"strValue":"1324892396000","longValue":0,"intValue":0},{"name":"name","type":1,"analyzed":true,"highlight":true,"strValue":"水浒传","longValue":0,"intValue":0}]}]}



当前Indexs中只有一个Index对象
多格式 如何反序列化成Index的集合 
求大家指点


对象类型格式如下


问题补充:
2013年4月26日 16:55

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

0 0

采纳的答案

写个完整的,供你参考:

import java.util.List;

import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;

public class TestJackson {
	private static String json = "{\"indexs\":[{\"id\":\"6310_2\",\"createTime\":1359424596001,\"indexFields\":[{\"name\":\"keyword_score\",\"type\":1,\"analyzed\":true,\"highlight\":true,\"strValue\":\"2.1781344\",\"longValue\":0,\"intValue\":0},{\"name\":\"object_id\",\"type\":1,\"analyzed\":true,\"highlight\":true,\"strValue\":\"6310\",\"longValue\":0,\"intValue\":0},{\"name\":\"object_type\",\"type\":1,\"analyzed\":true,\"highlight\":true,\"strValue\":\"2\",\"longValue\":0,\"intValue\":0},{\"name\":\"user_id\",\"type\":1,\"analyzed\":true,\"highlight\":true,\"strValue\":\"657\",\"longValue\":0,\"intValue\":0},{\"name\":\"user_name\",\"type\":1,\"analyzed\":true,\"highlight\":true,\"strValue\":\"好书推荐\",\"longValue\":0,\"intValue\":0},{\"name\":\"publish_time\",\"type\":1,\"analyzed\":true,\"highlight\":true,\"strValue\":\"1324892396000\",\"longValue\":0,\"intValue\":0},{\"name\":\"name\",\"type\":1,\"analyzed\":true,\"highlight\":true,\"strValue\":\"水浒传\",\"longValue\":0,\"intValue\":0}]}]}";
	
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		ObjectMapper mapper = new ObjectMapper(); 
		JsonNode jsonNode = mapper.readTree(json); 
		JsonNode jn = jsonNode.get("indexs");
		System.out.println(jn.toString());
		
		Index p = mapper.readValue(json, Index.class); 
		System.out.println(p.getIndexs());
		List<Model> indexs = p.getIndexs();
		for(Model m : indexs) {
			System.out.println(m.getId());
		}
	}

}

class Index {
	private List<Model> indexs;

	public List<Model> getIndexs() {
		return indexs;
	}

	public void setIndexs(List<Model> indexs) {
		this.indexs = indexs;
	}
}

class Model {
	private String id;
	private long createTime;
	private List<Field> indexFields;
	public Model() {
		
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public long getCreateTime() {
		return createTime;
	}
	public void setCreateTime(long createTime) {
		this.createTime = createTime;
	}
	public List<Field> getIndexFields() {
		return indexFields;
	}
	public void setIndexFields(List<Field> indexFields) {
		this.indexFields = indexFields;
	}
	
	
}

class Field {
	private String name;
	private int type;
	private boolean analyzed;
	private boolean highlight;
	private String strValue;
	private long longValue;
	private int intValue;
	
	public Field() {
		
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getType() {
		return type;
	}
	public void setType(int type) {
		this.type = type;
	}
	public boolean isAnalyzed() {
		return analyzed;
	}
	public void setAnalyzed(boolean analyzed) {
		this.analyzed = analyzed;
	}
	public boolean isHighlight() {
		return highlight;
	}
	public void setHighlight(boolean highlight) {
		this.highlight = highlight;
	}
	public String getStrValue() {
		return strValue;
	}
	public void setStrValue(String strValue) {
		this.strValue = strValue;
	}
	public long getLongValue() {
		return longValue;
	}
	public void setLongValue(long longValue) {
		this.longValue = longValue;
	}
	public int getIntValue() {
		return intValue;
	}
	public void setIntValue(int intValue) {
		this.intValue = intValue;
	}
}

2013年4月26日 20:45
0 0

给你写个简单的例子,仅供参考:

import java.util.List;

import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;


public class TestJackson {
	private static String json = "{\"indexs\":[{\"id\":\"6310_2\",\"createTime\":1359424596001,\"indexFields\":[{\"name\":\"keyword_score\",\"type\":1,\"analyzed\":true,\"highlight\":true,\"strValue\":\"2.1781344\",\"longValue\":0,\"intValue\":0},{\"name\":\"object_id\",\"type\":1,\"analyzed\":true,\"highlight\":true,\"strValue\":\"6310\",\"longValue\":0,\"intValue\":0},{\"name\":\"object_type\",\"type\":1,\"analyzed\":true,\"highlight\":true,\"strValue\":\"2\",\"longValue\":0,\"intValue\":0},{\"name\":\"user_id\",\"type\":1,\"analyzed\":true,\"highlight\":true,\"strValue\":\"657\",\"longValue\":0,\"intValue\":0},{\"name\":\"user_name\",\"type\":1,\"analyzed\":true,\"highlight\":true,\"strValue\":\"好书推荐\",\"longValue\":0,\"intValue\":0},{\"name\":\"publish_time\",\"type\":1,\"analyzed\":true,\"highlight\":true,\"strValue\":\"1324892396000\",\"longValue\":0,\"intValue\":0},{\"name\":\"name\",\"type\":1,\"analyzed\":true,\"highlight\":true,\"strValue\":\"水浒传\",\"longValue\":0,\"intValue\":0}]}]}";

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		ObjectMapper mapper = new ObjectMapper(); 
		JsonNode jsonNode = mapper.readTree(json); 
		//JsonNode jn = jsonNode.get("indexs");
		String id = jsonNode.get("indexs").toString(); 
		System.out.println(id);
		//List list =  mapper.readValue(person, new TypeReference<List>() {
		//}); 
		//Person p = mapper.readValue(person,Person.class); 
	}

}


jackson主要使用下面两段代码完成反序列化话:
ObjectMapper mapper = new ObjectMapper(); 
JsonNode jsonNode = mapper.readTree(json); //json为json字符串

然后通过jsonNode再做相应的处理。如对于对象转换,直接使用
Person p = mapper.readValue(person,Person.class);

如果对于List类型,使用:
List list =  mapper.readValue(person, new TypeReference<List>() {
}); 

2013年4月26日 17:36
0 0

String personstr = getRequest().getParameter("persons");
  JSONArray json = JSONArray.fromObject(personstr);
  List<InvoidPerson> persons = (List<InvoidPerson>)JSONArray.toCollection(json, nvoidPerson.class);

http://blog.sina.com.cn/s/blog_5920510a01011vu8.html

2013年4月26日 17:19

相关推荐

    jackson json序列化,反序列化所需jar包

    Jackson是Java领域中广泛使用的JSON处理库,它提供了高效的JSON序列化和反序列化功能。在Java应用程序中,我们经常需要将Java对象转换为JSON字符串(序列化)或从JSON字符串恢复Java对象(反序列化),Jackson库就是...

    Json反序列化

    反序列化是将JSON格式的字符串转换为程序可直接使用的对象的过程,这对于处理网络请求返回的数据至关重要。在本篇文章中,我们将深入探讨JSON反序列化的概念、原因以及在实际开发中的应用。 一、什么是JSON反序列化...

    fastjson、gson、jackson序列化和反序列化所用 json

    在IT行业中,JSON(JavaScript Object Notation)是一种广泛使用的轻量级数据交换格式,它易于人阅读和编写,...在实际编程中,我们可能需要根据文件内容的具体结构来设计对应的Java类,以便正确地反序列化JSON数据。

    fastJosn Gson Jackson 序列化和反序列化所需要的jarlib.rar

    在Java开发中,序列化和反序列化是数据转换的重要环节,主要用于将对象转换为可存储或传输的数据格式,如JSON字符串,以及将这些数据还原为原来的对象。本压缩包包含fastJson、Gson和Jackson这三种流行JSON库的jar...

    Jackson进行json序列化

    Jackson是Java领域中广泛使用的JSON处理库,它提供了高效的序列化和反序列化功能,能够将Java对象转换为JSON格式的字符串,同时也能将JSON数据转换回Java对象。在这个小例子中,我们将深入探讨如何使用Jackson进行...

    Json序列化与反序列化详解

    本文将深入探讨JSON的序列化与反序列化过程,以及如何使用Gson、FastJson和Jackson这三种流行的Java库来实现这一功能。 一、什么是JSON序列化与反序列化? 1. JSON序列化:序列化是指将Java对象转换为JSON字符串的...

    jackson库实现定制化的java序列化反序列化操作

    例如,XML元素的顺序可能会影响到反序列化结果,而JSON则不关心属性的顺序。此外,XML的命名空间处理和属性与元素的区别也可能带来挑战。 要解决这些限制,Jackson库提供了`XmlMapper`类专门处理XML数据。你可以...

    Java Json序列化与反序列化

    总结,Java中的JSON序列化与反序列化是数据交互的重要环节,Jackson和Gson是两个常用的库,它们提供了丰富的功能和良好的API设计,使得处理JSON数据变得简单高效。通过理解和掌握这些知识,开发者可以更好地在Java...

    使用fasterxml.jackson反序列化json串

    本篇将详细介绍如何使用fasterxml.jackson库来反序列化JSON字符串,并解决反序列化过程中遇到的问题。 首先,我们来理解JSON和反序列化的基本概念。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式...

    实例解析Json反序列化之ObjectMapper(自定义实现反序列化方法)

    通过自定义反序列化方法,我们可以灵活地处理各种复杂的数据映射需求,将JSON数据准确无误地转换成Java对象,以供后端业务逻辑处理。这一过程不仅涉及到Java反射机制的运用,同时也需要对JSON格式有深入的理解。对于...

    使用jackson完成json与java对象的互相转换实例

    本实例将详细介绍如何使用Jackson库进行JSON到Java对象的反序列化以及Java对象到JSON的序列化。 首先,我们需要引入Jackson库。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    JAVA及Jackson反序列化漏洞.docx

    Jackson库是Java中广泛使用的JSON处理库,它提供了高效的序列化和反序列化功能。Jackson的反序列化过程是通过解析JSON字符串或流,并将其转换为相应的Java对象。核心类`...

    使用jackson完成json与Java对象互转

    1. 具体到反序列化,我们先准备一个JSON字符串: ```java String jsonString = "{\"name\":\"张三\",\"age\":30}"; ``` 2. 使用`ObjectMapper`将JSON字符串解析为User对象: ```java User user = mapper.readValue...

    Jackson进行JSON的序列化与反序列化案例教程.docx

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,已经成为了广泛使用的数据序列化和反序列化的格式之一。 跨平台支持:JSON可以被多种编程语言解析和生成,可以在不同的平台和语言之间进行数据交换...

    C#和Java的序列化反序列化

    而在Java中,我们可以通过实现`Serializable`接口来使类支持序列化,或者使用`java.io.ObjectOutputStream`和`java.io.ObjectInputStream`进行对象的序列化和反序列化。 接下来,我们讨论反序列化。反序列化是序列...

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

    例如,一个Java类可以有对应的JSON键值对,这样在序列化(对象转JSON)或反序列化(JSON转对象)时,Jackson会自动进行对应。 2. `ObjectMapper`: Jackson的核心类`ObjectMapper`提供了对象与JSON之间的转换功能...

    序列化与反序列化

    要反序列化JSON字符串,我们可以使用`readValue()`方法: ```java MyJavaClass myObject = mapper.readValue(jsonString, MyJavaClass.class); ``` 在标签"序列化"中,我们可以理解为该示例不仅关注JSON,也可能...

    支持javax.money数据类型的JSON序列化和反序列化

    这个模块实现了`Module`接口,可以注册到Jackson的`ObjectMapper`中,从而使得`Money`、`MonetaryAmount`等货币相关类能够被正确地序列化为JSON字符串,并从JSON字符串反序列化回Java对象。 `javax.money`是JSR 354...

    Json 数据格式化 jackson

    Jackson是Java中最流行的JSON处理库之一,由FasterXML团队开发,提供了高效且灵活的方式来序列化和反序列化Java对象为JSON格式。 Jackson库主要由三个核心模块组成,这与提供的压缩包文件中的jar文件对应: 1. **...

    json与对象相互转换系列处理

    - `ObjectMapper.readValue(jsonStr, Class)`: 反序列化JSON字符串到指定类型的Java对象。 - 使用Gson库: - `Gson().toJson(object)`: 序列化Java对象到JSON字符串。 - `Gson().fromJson(jsonStr, Class)`: 反...

Global site tag (gtag.js) - Google Analytics