[英]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.