繁体   English   中英

将动态Nosql文档映射到Java对象

[英]Mapping dynamic nosql document to java object

我有以下JSON

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

并且需要映射到Java对象,但是“详细信息”对象会根据产品不断变化,例如,如果产品为“平板电脑”,则“详细信息”中的字段数将有所不同。如何在此类数据上建模字段的数量可以是动态的,并取决于“ product”。在像javascript这样的松散类型语言中,您可以向对象动态添加字段。是否可以通过一种方法向Java对象动态添加属性/字段?

您可以映射以获得详细信息以解决动态数据情况。

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

动态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转换为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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM