当为包含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" } }
为了使其更具互操作性,我想将其编码为字符串,即如下所示:
{ "version" : "1" }
我已经阅读了wiki on codecs和extended JSON以及大部分的Javadoc,但是我终生都想不出如何注册一个自定义的JSON序列化器。即使是默认的org.bson.codecs.LongCodec
似乎也不是引入$numberLong
语法的那个。
显然,一个简单的设置(例如,等同于Gson的setLongSerializationPolicy(LongSerializationPolicy.STRING)
)将是理想的,但任何方法都将感谢这项工作。
发布于 2017-08-07 21:00:12
为了获得严格的JSON,您可以使用com.mongodb.util.JSON和方法serialize()
JSON.serialize(parse)
或者,您可以使用一些JSON库。例如GSON。
Gson gson = new Gson();
String gsonString = gson.toJson(parse);
发布于 2021-03-25 13:48:47
使用json.simple
JSONObject.toJSONString(解析)
https://stackoverflow.com/questions/42444340
复制相似问题