我有以下JSON
{
"id":"wer_ereeyudhk567",
"product":"Phone",
"details": {
"name" :"Nexsus 6",
"cpu": "quadCore",
"ram": "3 gb"
}
}
并且需要映射到java对象,但是"详细信息"对象不断变化,基于产品,如产品是"平板电脑" "详细信息"中的字段数量将会有所不同。如何对这类数据进行建模,其中字段数量可以是动态的,并且取决于"产品" ?。在像javascript这样的松散类型的语言中,你可以动态地向对象添加一个字段。有没有办法可以动态地向java对象添加一个属性/字段?
答案 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);