【问题标题】:How to rename key in JSONObject using java?如何使用 java 重命名 JSONObject 中的键?
【发布时间】:2015-03-16 06:35:54
【问题描述】:

我想使用 Java 重命名 JSON 对象的键。

我的输入 JSON 是:

{  
    "serviceCentreLon":73.003742,
    "type":"servicecentre",
    "serviceCentreLat":19.121737,
    "clientId":"NMMC01" 
}

我想改成:

{  
    "longitude":73.003742,
    "type":"servicecentre",
    "latitude":19.121737,
    "clientId":"NMMC01" 
}

即我想将"serviceCentreLon" 重命名为"longitude" 并将"serviceCentreLat" 重命名为"latitude"。我在我的代码中使用JSONObject 类型。

【问题讨论】:

    标签: java json


    【解决方案1】:

    假设您使用的是 json.org 库:一旦有了 JSONObject,为什么不直接这样做?

    obj.put("longitude", obj.get("serviceCentreLon"));
    obj.remove("serviceCentreLon");
    obj.put("latitude", obj.get("serviceCentreLat"));
    obj.remove("serviceCentreLat");
    

    您可以创建一个 rename 方法来执行此操作(然后调用它两次),但如果这些是您要重命名的唯一字段,这可能有点过头了。

    【讨论】:

      【解决方案2】:
      String data= json.toString();
      data=data.replace("serviceCentreLon","longitude");
      data=data.replace("serviceCentreLat","latitude");
      

      转回json对象

      【讨论】:

        【解决方案3】:

        以 Danyal Sandeelo 的方法为基础,而不是:

        data=data.replace("serviceCentreLon","longitude");
        

        使用

        data=data.replace("\"serviceCentreLon\":","\"longitude\":");
        

        此方法显式匹配 json 键语法,并避免在键值作为有效数据存在于 json 字符串中的其他位置时出现模糊错误。

        【讨论】:

        • "foo\"serviceCentreLon": "bar" 变为 "foo\"longitude": "bar"
        【解决方案4】:

        我不确定我的问题是否正确,但以下是否应该有效?

        您可以使用正则表达式来替换键,例如:

        String str = myJsonObject.toString();
        str = str.replace(/"serviceCentreLon":/g, '"longitude":');
        str = str.replace(/"serviceCentreLat":/g, '"latitude":');
        

        它没有那么“干净”,但它可能会很快完成工作。

        【讨论】:

        • 我们如何替换键和值,比如说“serviceCentreLon”:73.003742 到“longitude”:“80.456”,有没有办法做到这一点?
        【解决方案5】:

        解决该问题的最佳方法是解析 JSON 数据,然后替换密钥。有许多解析器可用 - google gson、Jackson serializer de-serializers、org.json.me 是一些这样的 Java 库来处理 JSON 数据。

        http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/

        如果您有一个非常通用且相对庞大的 JSON 数据,这是处理它的好方法。当然,您必须花时间学习该库以及如何使用它。

        http://www.baeldung.com/jackson-map 是另一个这样的解析器。

        https://stleary.github.io/JSON-java/ 是最简单的一种,尤其是如果您不想进行任何严重的序列化或反序列化

        【讨论】:

          【解决方案6】:

          有一个映射到这个对象数据结构的对象。

          使用 GSON 解析器或 Jackson 解析器将此 json 转换为 POJO。

          然后将此对象映射到另一个具有所需配置的 Java 对象

          使用相同的 GSON 解析器将该 POJO 转换回 json。


          请参阅此以供进一步参考

          http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-04-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-06-29
            • 1970-01-01
            • 2012-09-04
            相关资源
            最近更新 更多