2014-03-25 16 views
1

我想在mongo数据库中插入一个文档(json字符串)。其中一个关键的“配置文件”的值是一个json字符串。所以,基本上它是一个嵌套的json结构。我知道可能通过滥用文档类中的collection-refs/one-may关系来插入嵌套的json。如何使用Spring Data将任意数据的子文档保存到MongoDB?

我在这里面临的问题是,嵌套部分的json结构不固定,因此不能抽象为Java类,因为它是从社交网络API获取的自定义数据json。定义“profile”为Java字符串,用斜杠插入配置文件数据,从而转义json数据中的双引号,大括号等。

是否有其他方式没有将其转换为另一个对象。

回答

3

要走的路可能是在包含的类中使profile a Map<String, Object>。这样,您可以在其中存储任意数据。

class MyDocument { 

    Map<String, Object> profile; 
} 
0

使用地图的答案是有点不清楚,我...你怎么转换任意JSON字符串到地图的方式,春天的数据将坚持它就好了?

我发现使用“com.mongodb.DBObject”类型的属性起作用。然后使用JSON.parse设置属性:

profile = (DBObject) JSON.parse(arbitraryJSONString) 
+0

Spring数据将持久包含嵌套的Map对象的地图对象就好了。像 'Map dataMap = new HashMap ()put {“map”,new HashMap (){{nestedProperty“,”nestedString “); }}); put(“nonNestedProperty”,“nonNestedString”); }};' 很容易持久。要将任意JSON字符串转换为Map,可以使用Jackson Mapper。 [这个stackoverflow答案](http://stackoverflow.com/a/19841409/2125808)可能会有所帮助。 – manan

+0

听起来这样可能会起作用,但是如果我像上面那样做,没有额外的依赖关系,那么在一行中执行它会更好吗? –

相关问题