Java Substring - 提取下一个出现的引号中包含的字符串

标签 java regex string substring indexof

交易响应(字符串)如下所示。

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

此外,有关 JSON 解析的 SO 问题 ( How to parse JSON in Java ) 还提供了您可能会觉得有用的进一步答案。

关于Java Substring - 提取下一个出现的引号中包含的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35106411/

相关文章:

c# - 对于 var q = "A"+ "B"+ "C",字符串连接在 C# 中是如何发生的

java - 在 Java 中使用类文件名字符串调用静态方法

Java Swing : How do I wake up the main thread from the event-dispatch thread?

java - JList - 从点击中获取值(value)

regex - Sed/grep 仅最后一部分数字(参见示例)

ruby - 如何使用 Ruby 正则表达式从 XML 片段中提取值

java - 如何在单独的方法中编辑字符串中的特定字符?

java - 实现共同浏览

java - 当键盘出现时使整个布局变小

ruby - 在 ruby​​ 中捕获可选参数