Java 从JSONArray获取元素时保留双引号

Java 从JSONArray获取元素时保留双引号,java,json,kotlin,jsonpath,Java,Json,Kotlin,Jsonpath,我使用从JSON文件中检索值。JSON文件如下所示: [ { "username": "John", "password": { "passwordValue": "passwordjohn", "secret_key": "123" } }, { "username": "Nick", "password": { "passwordValue": "XXX", "secret_key": "ZZ

我使用从JSON文件中检索值。JSON文件如下所示:

[
  {
    "username": "John",
    "password": {
      "passwordValue": "passwordjohn",
      "secret_key": "123"
    }
  },
  {
    "username": "Nick",
    "password": {
      "passwordValue": "XXX",
      "secret_key": "ZZZ",
      "other_key": "YYY"
    }
  }
]
{passwordValue: passwordjohn, secret_key: 123}
我使用的JsonPath是从特定用户检索
密码。例如:

fun getPassword() {
    val passwords: JSONArray = read(jsonFile, "\$.[?(@.name==\"John\")].password")
}
然而,我发现了两个障碍。首先,我总是返回一个
net.minidev.json.JSONArray
,并且附加
[0]
的路径不起作用

因此,我尝试从我得到的
JSONArray
中获取唯一的元素,如下所示:
credentials[0]
。不幸的是,这删除了字段名中的双引号,导致如下情况:

[
  {
    "username": "John",
    "password": {
      "passwordValue": "passwordjohn",
      "secret_key": "123"
    }
  },
  {
    "username": "Nick",
    "password": {
      "passwordValue": "XXX",
      "secret_key": "ZZZ",
      "other_key": "YYY"
    }
  }
]
{passwordValue: passwordjohn, secret_key: 123}
这是不可能的

我正在寻找一种方法来找回这个:

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

我最后做的是将
[
]
符号转换为
字符串后,从
JSONArray
的开头删除它:

private fun JSONArray.toCredentialString(): String {
    val credentialString = this.toString()
    return credentialString.substring(1, credentialString.length - 1)
}

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

我最后做的是将
[
]
符号转换为
字符串后,从
JSONArray
的开头移除
:

private fun JSONArray.toCredentialString(): String {
    val credentialString = this.toString()
    return credentialString.substring(1, credentialString.length - 1)
}

欢迎提供更好的解决方案。

有趣的是,大多数过去的问题都会询问如何删除引号:)检查此github问题:有趣的是,大多数过去的问题都会询问如何删除引号:)检查此github问题: