从JSONArray

时间:2017-09-14 15:50:18

标签: java json kotlin jsonpath

我正在使用JsonPath从JSON文件中检索值。 JSON文件看起来像这样:

[
  {
    "username": "John",
    "password": {
      "passwordValue": "passwordjohn",
      "secret_key": "123"
    }
  },
  {
    "username": "Nick",
    "password": {
      "passwordValue": "XXX",
      "secret_key": "ZZZ",
      "other_key": "YYY"
    }
  }
]

我使用的JsonPath是从特定用户检索password。例如:

fun getPassword() {
    val passwords: JSONArray = read(jsonFile, "\$.[?(@.name==\"John\")].password")
}

然而,我发现了两个障碍。首先,我总是返回net.minidev.json.JSONArray,并且附加[0]的相同路径不起作用。

因此,我尝试从JSONArray获取唯一的元素,我会这样:credentials[0]。不幸的是,这个删除字段名称中的双引号,结果是这样的:

{passwordValue: passwordjohn, secret_key: 123}

这是不可能的。

我正在寻找一种方法来解决这个问题:

{"passwordValue": "passwordjohn", "secret_key": "123"}

1 个答案:

答案 0 :(得分:0)

我最终做的是在将[转换为]之后从JSONArray开头删除Stringprivate fun JSONArray.toCredentialString(): String { val credentialString = this.toString() return credentialString.substring(1, credentialString.length - 1) } 符号:

global-ignores = xcuserdata

欢迎任何更好的解决方案。