从 JSONArray 获取元素时保留双引号
Keep double quotes when getting element from JSONArray
我正在使用 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"}
我最后做的是在 JSONArray
的开头删除 [
和 ]
符号,然后将其转换为 String
:
private fun JSONArray.toCredentialString(): String {
val credentialString = this.toString()
return credentialString.substring(1, credentialString.length - 1)
}
欢迎任何更好的解决方案。
我正在使用 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"}
我最后做的是在 JSONArray
的开头删除 [
和 ]
符号,然后将其转换为 String
:
private fun JSONArray.toCredentialString(): String {
val credentialString = this.toString()
return credentialString.substring(1, credentialString.length - 1)
}
欢迎任何更好的解决方案。