将LinkedHashMap 转换为Java中的对象

我将直接从我的问题开始,然后我会提供更多背景信息。

简单 :我有一个LinkedHashMap ,它代表一个特定的对象。 将它转换为该对象的最佳方法是什么?

我知道您可以使用generics来遍历所有元素并设置字段,但什么是嵌套对象?

背景 :我有一个消耗JSON对象的JAX-RS服务。 我的服务处理不同类型的对象,只代表一个接口。 所以我不知道哪些对象来自外部以及哪个程序正在使用我的服务。

在运行时,我通过我的界面上的@Inject获取信息。 JAX-RS服务将来自客户端的数据存储在无类型的Object中,并自动完成(即LinkedHashMap )。

使用我的界面,我想提供一个类似setObject的方法,参数应该是该类型的对象。 我可以处理所有这些,但不是我将Object LinkedHashMap转换为该特定对象的部分。

示例结构 :目标对象可能是这样的

 public class Document { private String title; private String id; private int version; } 

LinkedHashMap看起来像那样

 {title=some title, id=1, version=1} 

您可以创建两个类

 @XmlAccessorType(XmlAccessType.FIELD) public class Document { @XmlElement private String title; @XmlElement private String id; @XmlElement private int version; } @XmlAccessorType(XmlAccessType.FIELD) public class MapJson { @XmlElement private LinkedHashMap documents; } 

和cobvert对象到JSON使用
jackson

 new org.codehaus.jackson.map.ObjectMapper().writeValueAsString(instanceofMapJson); 

谷歌JSON

 new com.google.gson.Gson().toJson(instanceofMapJson); 

PS。 使用google json,您可以从类中删除xml注释

reflection是设置通用未知对象属性的唯一方法。
您可以在文档中找到所需的一切。