当为包含Int64(Java long)值的文档调用org.bson.Document.toJson()
时,它使用Mongo" $ numberLong"进行编码。编码。例如这段代码:
Document parse = Document.parse("{}");
parse.put("version", 1L);
String json = parse.toJson();
生成此JSON:
{ "version" : { "$numberLong" : "1" } }
为了使它更易于互换,我想把它编码为String,就像这样:
{ "version" : "1" }
我已经阅读了wiki on codecs和extended JSON以及大多数Javadoc,但我不能为我的生活找到如何为longs注册自定义JSON序列化程序。即使默认org.bson.codecs.LongCodec
似乎也不会引入$numberLong
语法。
显然,一个简单的设置(例如,等同于Gson' s setLongSerializationPolicy(LongSerializationPolicy.STRING)
)将是理想的,但任何使这项工作的方式都将受到赞赏。
答案 0 :(得分:0)
要获得严格的JSON,您可以使用com.mongodb.util.JSON 和方法 serialize()
JSON.serialize(parse)
或者您可以使用一些JSON库。例如GSON。
Gson gson = new Gson();
String gsonString = gson.toJson(parse);
答案 1 :(得分:0)
使用 json.simple
JSONObject.toJSONString(parse)