-
如何使用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个答案 按时间排序 按投票排序
-
采纳的答案
写个完整的,供你参考:
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
-
给你写个简单的例子,仅供参考:
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
-
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.html2013年4月26日 17:19
相关推荐
Jackson是Java领域中广泛使用的JSON处理库,它提供了高效的JSON序列化和反序列化功能。在Java应用程序中,我们经常需要将Java对象转换为JSON字符串(序列化)或从JSON字符串恢复Java对象(反序列化),Jackson库就是...
反序列化是将JSON格式的字符串转换为程序可直接使用的对象的过程,这对于处理网络请求返回的数据至关重要。在本篇文章中,我们将深入探讨JSON反序列化的概念、原因以及在实际开发中的应用。 一、什么是JSON反序列化...
在IT行业中,JSON(JavaScript Object Notation)是一种广泛使用的轻量级数据交换格式,它易于人阅读和编写,...在实际编程中,我们可能需要根据文件内容的具体结构来设计对应的Java类,以便正确地反序列化JSON数据。
在Java开发中,序列化和反序列化是数据转换的重要环节,主要用于将对象转换为可存储或传输的数据格式,如JSON字符串,以及将这些数据还原为原来的对象。本压缩包包含fastJson、Gson和Jackson这三种流行JSON库的jar...
Jackson是Java领域中广泛使用的JSON处理库,它提供了高效的序列化和反序列化功能,能够将Java对象转换为JSON格式的字符串,同时也能将JSON数据转换回Java对象。在这个小例子中,我们将深入探讨如何使用Jackson进行...
本文将深入探讨JSON的序列化与反序列化过程,以及如何使用Gson、FastJson和Jackson这三种流行的Java库来实现这一功能。 一、什么是JSON序列化与反序列化? 1. JSON序列化:序列化是指将Java对象转换为JSON字符串的...
例如,XML元素的顺序可能会影响到反序列化结果,而JSON则不关心属性的顺序。此外,XML的命名空间处理和属性与元素的区别也可能带来挑战。 要解决这些限制,Jackson库提供了`XmlMapper`类专门处理XML数据。你可以...
总结,Java中的JSON序列化与反序列化是数据交互的重要环节,Jackson和Gson是两个常用的库,它们提供了丰富的功能和良好的API设计,使得处理JSON数据变得简单高效。通过理解和掌握这些知识,开发者可以更好地在Java...
本篇将详细介绍如何使用fasterxml.jackson库来反序列化JSON字符串,并解决反序列化过程中遇到的问题。 首先,我们来理解JSON和反序列化的基本概念。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式...
通过自定义反序列化方法,我们可以灵活地处理各种复杂的数据映射需求,将JSON数据准确无误地转换成Java对象,以供后端业务逻辑处理。这一过程不仅涉及到Java反射机制的运用,同时也需要对JSON格式有深入的理解。对于...
本实例将详细介绍如何使用Jackson库进行JSON到Java对象的反序列化以及Java对象到JSON的序列化。 首先,我们需要引入Jackson库。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...
Jackson库是Java中广泛使用的JSON处理库,它提供了高效的序列化和反序列化功能。Jackson的反序列化过程是通过解析JSON字符串或流,并将其转换为相应的Java对象。核心类`...
1. 具体到反序列化,我们先准备一个JSON字符串: ```java String jsonString = "{\"name\":\"张三\",\"age\":30}"; ``` 2. 使用`ObjectMapper`将JSON字符串解析为User对象: ```java User user = mapper.readValue...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,已经成为了广泛使用的数据序列化和反序列化的格式之一。 跨平台支持:JSON可以被多种编程语言解析和生成,可以在不同的平台和语言之间进行数据交换...
而在Java中,我们可以通过实现`Serializable`接口来使类支持序列化,或者使用`java.io.ObjectOutputStream`和`java.io.ObjectInputStream`进行对象的序列化和反序列化。 接下来,我们讨论反序列化。反序列化是序列...
例如,一个Java类可以有对应的JSON键值对,这样在序列化(对象转JSON)或反序列化(JSON转对象)时,Jackson会自动进行对应。 2. `ObjectMapper`: Jackson的核心类`ObjectMapper`提供了对象与JSON之间的转换功能...
要反序列化JSON字符串,我们可以使用`readValue()`方法: ```java MyJavaClass myObject = mapper.readValue(jsonString, MyJavaClass.class); ``` 在标签"序列化"中,我们可以理解为该示例不仅关注JSON,也可能...
这个模块实现了`Module`接口,可以注册到Jackson的`ObjectMapper`中,从而使得`Money`、`MonetaryAmount`等货币相关类能够被正确地序列化为JSON字符串,并从JSON字符串反序列化回Java对象。 `javax.money`是JSR 354...
Jackson是Java中最流行的JSON处理库之一,由FasterXML团队开发,提供了高效且灵活的方式来序列化和反序列化Java对象为JSON格式。 Jackson库主要由三个核心模块组成,这与提供的压缩包文件中的jar文件对应: 1. **...
- `ObjectMapper.readValue(jsonStr, Class)`: 反序列化JSON字符串到指定类型的Java对象。 - 使用Gson库: - `Gson().toJson(object)`: 序列化Java对象到JSON字符串。 - `Gson().fromJson(jsonStr, Class)`: 反...