将动态nosql文档映射到java对象

将动态nosql文档映射到java对象,java,json,jackson,nosql,Java,Json,Jackson,Nosql,我有下面的JSON { "id":"wer_ereeyudhk567", "product":"Phone", "details": { "name" :"Nexsus 6", "cpu": "quadCore", "ram": "3 gb" } } 并且需要映射到java对象,但“细节”对象会根据产品不断变化,比如如果产品是“平板电脑”,那么“细节”中的字段数量会有

我有下面的JSON

{
  "id":"wer_ereeyudhk567",
  "product":"Phone",
  "details": {
               "name" :"Nexsus 6",
               "cpu": "quadCore",
               "ram": "3 gb"
             }
}

并且需要映射到java对象,但“细节”对象会根据产品不断变化,比如如果产品是“平板电脑”,那么“细节”中的字段数量会有所不同。“细节”中的字段数量会有所不同。在字段数量可以是动态的且取决于“产品”的情况下,我如何对此类数据建模?在类似javascript的松散类型语言中,您可以向对象动态添加字段。有没有一种方法可以向java对象动态添加属性/字段

您可以映射详细信息以解决动态数据案例

public class Product {
    private String id;
    private String product;
    private Map<String, Object> details;
}

动态nosql文档的Java模型[产品文档]

public class Product {
    private String id;
    private String product;
    private Map<String, Object> details; //details might contains another objects
}

谢谢你的回复,但是如果我使用Map,那么我将把所有值转换成字符串,我将丢失数据类型信息{numeric,boolean等}。我可以有一个方法来存储类型吗?。当然,您可以逐个贴图更改贴图,并在需要时强制转换值。我将为您编辑答案。感谢您的回复,但我也不知道对象中存在什么,是简单的数据类型(如字符串、数字、布尔值)还是复杂的类型(如另一个嵌套JSON)。是否有方法存储类型信息,这将有助于回溯到java对象。谢谢
public class Product {
    private String id;
    private String product;
    private Map<String, Object> details; //details might contains another objects
}
//1. Convert JSON to Java object
ObjectMapper mapper = new ObjectMapper();
Product productObject = mapper.readValue(JSONSource, Product.class); //JSONSource may be file or String
System.out.println(productObject.getXXX());

//2. Convert Java object to JSON format
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(JSONSource, productObject);