如何使用Mongo Java客户端将BSON Int64编码为JSON字符串

时间:2017-02-24 17:04:44

标签: java json mongodb bson

当为包含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 codecsextended JSON以及大多数Javadoc,但我不能为我的生活找到如何为longs注册自定义JSON序列化程序。即使默认org.bson.codecs.LongCodec似乎也不会引入$numberLong语法。

显然,一个简单的设置(例如,等同于Gson' s setLongSerializationPolicy(LongSerializationPolicy.STRING))将是理想的,但任何使这项工作的方式都将受到赞赏。

2 个答案:

答案 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)