【问题标题】:How can I change an object type in JSON string?如何更改 JSON 字符串中的对象类型?
【发布时间】:2016-07-18 13:53:01
【问题描述】:

我需要使用 java 解析 JSON 字符串并更改字段的对象类型。例如,我有下面的 JSON 字符串:

{
   "_id" : "54c955492b7c8eb21818bd09"
   "firstName": "my name"
}

我希望我的 JSON 字符串是这样的:

{
   "_id" : ObjectId("54c955492b7c8eb21818bd09")
   "firstName": "my name"
}

我怎样才能做到这一点?我正在使用 Gson 解析器。

【问题讨论】:

  • 除了语法错误,第二个不是 JSON。我看到 MongoDB OID 编码的方式是 "_id": { "$oid": "54c955492b7c8eb21818bd09" }
  • 是的。如何更改第一个 JSON 的 id 类型,以便 Gson 可以将其反序列化为包含 ObjectId 字段的用户对象。

标签: java json parsing gson


【解决方案1】:

使用正则表达式的解决方案:

jsonString.replaceAll("(\"_id\" : )(\"[^\"]*\")", "$1ObjectId($2)");

【讨论】:

    【解决方案2】:

    将 json 对象更改为实际的 json 字符串,如下所示:

    JsonParser p = new JsonParser();
    
    JsonElement r = p.parse("{
       \"_id\" : \"54c955492b7c8eb21818bd09\"
       \"firstName\": \"my name\"
    }");
    JsonObject ob = r.getAsJsonObject();
    
    r.toString();
    

    【讨论】:

      猜你喜欢
      • 2020-12-09
      • 2015-08-29
      • 2020-10-20
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多