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

时间:2015-06-25 03:46:22

标签: java json jackson nosql

我有以下JSON

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

并且需要映射到java对象,但是"详细信息"对象不断变化,基于产品,如产品是"平板电脑" "详细信息"中的字段数量将会有所不同。如何对这类数据进行建模,其中字段数量可以是动态的,并且取决于"产品" ?。在像javascript这样的松散类型的语言中,你可以动态地向对象添加一个字段。有没有办法可以动态地向java对象添加一个属性/字段?

2 个答案:

答案 0 :(得分:0)

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

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

使用:

String json = "{  'id':'wer_ereeyudhk567',  'product':'Phone',  'details': {  'name' :'Nexsus 6',  'cpu': 'quadCore',  'ram': '3 gb', 'isNew': true, 'quantity': 100}}";
Product product = new Gson().fromJson(json, Product.class);

System.out.println(product.getDetails());

答案 1 :(得分:0)

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

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

Jackson http://jackson.codehaus.org/是一个高性能JSON处理器Java库,用于将Java对象转换为JSON或从JSON转换。

将您的JSON转换为java对象,反之亦然:

//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);