0
我在将JSON转换为Java对象时遇到了一个问题。无法正确地将JSON对象转换为Java对象
我的JSON是如下
{
"_id":{
"$oid":"5981428cf1aa82a313540b76"
},
"productId":1,
"name":"The Big Lebowski",
"currency":{
"currency":"USD",
"value":40.5
}
}
我检索JSON作为DBOBJECT从MongoDB的数据库产品。
DBObject dbObject = productsCollection.findOne(searchQuery);
if(dbObject != null)
{
Product product = (Product) AppUtils.fromDBObject(dbObject, Product.class);
return Optional.of(product);
}
产品是回报
产品的[ProductID = 1,产品名称= NULL,currencyPrice =空]
在AppUtils.java我fromDBObject方法如下:
public static Object fromDBObject(DBObject dbObj, Class<?> clazz)
{
String json = dbObj.toString();
return new Gson().fromJson(json, clazz);
}
我的POJO如下:
public class Product
{
private long productId;
private String productName;
private CurrencyPrice currencyPrice;
// getter and setter
}
public class CurrencyPrice
{
private double value;
private String currency;
// getter and setter
}
我无法理解它将使用json将DBObject对象转换为Product对象的位置。
谢谢!
那么实际上是['.toJson()'](http://api.mongodb.com/java/current/com/mongodb/ BasicDBObject'上的BasicDBObject.html#toJson--)方法,这当然与'.toString()不同。但实际上你应该直接使用'BasicDBObject',因为它具有与['AbstractMap']相同的接口(http://docs.oracle.com/javase/7/docs/api/java/util/AbstractMap html的?是外部的=真)。不需要强制转换为JSON,然后返回到对象形式。它已经是一个可用的界面,而**不是** JSON。 –