事务响应(字符串)如下所示。

{
  "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解析库(至少以我的经验)是:


杰克逊(https://github.com/FasterXML/jackson
GSON(https://github.com/google/gson


此外,关于JSON解析(How to parse JSON in Java)的SO问题还有更多答案,您可能会觉得有用。

09-10 12:43
查看更多