交易响应(字符串)如下所示。
{
"errorId": "15eabcd5-30b3-479b-ae03-67bb351c07e6-00000092",
"errors": [
{
"code": "20000000",
"propertyName": "directDebitPaymentMethodSpecificInput.bankAccountBban.accountNumber",
"message": "PARAMETER_NOT_FOUND_IN_REQUEST"
}
]
}
我需要提取代码 20000000 和消息 PARAMETER_NOT_FOUND_IN_REQUEST。
我使用下面的代码片段来完成此操作,该代码片段在代码长度为 6 个字符时有效。
代码片段:
code = response2.getResponseBody().substring(response2.getResponseBody().indexOf("code")+9, 97).trim();
回应
{
"errorId": "1105db54-9c91-4a97-baa7-3c4182458047",
"errors": [ {
"code": "410110",
"requestId": "3927859",
"message": "UNKNOWN ORDER OR NOT PENDING"
} ]
}
请建议如何获取代码和消息后面包含的文本,无论下一次出现的引号内包含的文本长度如何。
编辑--
我知道这是一个 Json 响应,因此我需要解析它。 我正在使用下面的代码片段
JSONObject obj = new JSONObject(response2.getResponseBody());
String code = obj.getJSONObject("errors").getString("code");
但是,最终出现以下异常
org.json.JSONException: JSONObject["errors"] not found.
提前致谢
最佳答案
该响应采用 JSON 格式。您可能希望使用 JSON 解析器,而不是使用子字符串,以便可以将响应作为结构化数据而不是字符串进行交互。
您可以在此处找到有关 JSON 格式的更多信息:http://www.json.org/
两个最常见的 JSON 解析库(至少根据我的经验)是:
- jackson ( https://github.com/FasterXML/jackson )
- GSON ( https://github.com/google/gson )
此外,有关 JSON 解析的 SO 问题 ( How to parse JSON in Java ) 还提供了您可能会觉得有用的进一步答案。
关于Java Substring - 提取下一个出现的引号中包含的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35106411/