gson 对象:在Java中重命名嵌套和列出的JSON键

js5cn81o  于 2022-11-06  发布在  Java
关注(0)|答案(1)|浏览(176)

我正在尝试重命名一个json对象中的键名。我可以在顶层重命名,但如果键存在于另一个对象中或存在于列表对象中,则无法重命名。
到目前为止,这就是我所尝试的。

try {
                jsonObject.put(value, jsonObject.remove(key));
                LOG.trace("Renaming Field {} with Field {}", key, value);
            } catch (JSONException e) {
                throw new RuntimeException(e);
            }

下面是一个示例对象。

{
      "id": 123,
      "contactInformation": {
        "contact": {
          "email": "toshiaki_yagi@gmail.com",
        }
      },
      "supportingCustomer": [
        {
          "supportingCustomerName": "JOHN"
        },
        {
          "supportingCustomerName": "JOHN"
        }

      ]

}

在这里我可以重命名Id,但是重命名supportingCustomerName和使用org.json.JSONObject重命名contactInformation.contact.email有困难?或者有没有其他库,我可以用来重命名密钥。任何帮助将不胜感激?
我的JSON和密钥是动态的,而不是固定的。

8mmmxcuj

8mmmxcuj1#

最终使用

implementation group: 'com.jayway.jsonpath', name: 'json-path', version: '2.7.0' 

@Override
public DocumentContext renameKey(JsonPath path, String oldKeyName, String newKeyName) {
  List<String> modified =  path.renameKey(json, oldKeyName, newKeyName, configuration.addOptions(Option.AS_PATH_LIST));
  if(logger.isDebugEnabled()){
    for (String p : modified) {
      logger.debug("Rename path {} new value {}", p, newKeyName);
    }
  }
  return this;
}

相关问题