java - 无法从 mongodb 解析 json 格式的文档列表

标签 java mongodb gson

我收到来自 mongodb 的以下响应,但我找不到反序列化它的方法。

[{ "_id" : { "$oid" : "some ids"} ,
   "index" : 0 , 
   "question" : "some text ?",
   "optiona" : "OS",
   "optionb" : "JAVA",
   "optionc" : "C",
   "optiond" : "C#",
   "answer" : "JAVA",
   "created_at" : { "$date" : "2012-09-20T06:37:04.306Z" },
   "Active" : "1"
 }, 
 { "_id" : { "$oid" : "505ab997aded66f4c1ccc7f3" }, 
   "index" : 1 ,
   ..../objects like that
}]

更具体地说,我找不到解析 $date 元素和 $oid 的方法。我该如何编写对应于该元素的数据成员,还是必须编写内部类?这似乎是非常基本的问题,但我找不到办法。我将在 gson 解析中使用该类来解析。谢谢

最佳答案

在toString 中,$date 和$oid 是人工字段。如果您使用标准的 java mongo 驱动程序,那么 get("created_at") 应该是一个 java.util.Date 实例,get("_id") 应该是一个 org.bson.types.ObjectId 实例。

我对你的问题有点困惑,所以如果你使用的是原始 BSON 对象,那么“created_at”将是一个 BSON 日期类型 (0x09),其有效负载是一个 long,代表自 Unix 纪元以来的毫秒。 “_id”将是一个 BSON ObjectId 类型(0x07),id 的有效负载为 12 个字节。如果我没记错的话,它与 Java 所期望的字节序相反。查看BSON Spec了解更多详情。

关于java - 无法从 mongodb 解析 json 格式的文档列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12870042/

相关文章:

java - 如何关闭stopService的主类

java - 输入整数时,整数不会保存在 SQL 中

java - 来自 mongoDB 的更改事件中的 updateDescription.updatedFields 为空

java - 使用 AWS S3 Java 将 ZipOutputStream 上传到 S3 而无需将 zip 文件(大)临时保存到磁盘

java - java中如何生成随机整数?

javascript - 绑定(bind)动态服务器响应(嵌套 json)

python 前夕 : fields not returned in default configuration

java - 将类转换为 JsonElement (com.google.gson.JsonElement)

java - GSON:无知地将 JSON 转换为对象

java - 使用Gson解析异常Json