解析字符串 java

Parse a String java

我有一个 BuilderString 包含与此 link 相同的结果: https://hadoop.apache.org/docs/current/hadoop-project-dist/

我正在寻找提取 `` 的值。 return 包含所有文件名的字符串列表。

我的代码是:

try {
    HttpURLConnection conHttp = (HttpURLConnection) url.openConnection();
    conHttp.setRequestMethod("GET");
    conHttp.setDoInput(true);

    InputStream in = conHttp.getInputStream();
    int ch;
    StringBuilder sb = new StringBuilder();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

如何解析 JSON 以获取 pathSuffix 和 return 的所有值以及包含文件名的 list of string? 你能给我一个建议吗?谢谢

即JSON格式化数据; JSON 不是正则的,因此,试图用正则表达式解析它是不可能的,而试图用子字符串和朋友解析它会花费你一周的时间,而且很容易出错。

阅读内容 JSON is (no worries; it's very simple to understand!), then get a good JSON library (the standard json.org library absolutely sucks, don't get that one), such as Jackson or GSON,用于提取所需内容的代码将非常健壮且易于编写和测试。

我不建议从头开始为 hadoop 构建 API 绑定。 Java 语言已经存在此绑定:

https://hadoop.apache.org/docs/stable/api/org/apache/hadoop/fs/FileSystem.html#listLocatedStatus-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.PathFilter-

不错的选择

执行以下步骤:

  1. Convert to JSON
  2. 获取值使用:JSONObject.get("FileStatuses").getAsJson().get("FileStatus").getAsJsonArray()
  3. Iterate over all objects在数组中得到你想要的值

错误选项

尽管如前所述,不建议这样做 - 如果您想继续使用字符串,您可以使用:

String str_to_find= "pathSuffix"      : \"";

while (str.indexOf(str_to_find) != -1){
   str = str.substring(str.indexOf(str_to_find)+str_to_find.length);
   value = str.substring(0,str.indexOf("\""));
   System.out.println("Value is " + value);
}