当前位置: 首页 > 知识库问答 >
问题:

使用正则表达式解析非常简单的JSON文件

佴普松
2023-03-14

我不确定是否可以这样做,但我想将一个非常简单的JSON文件解析为一个字符串数组。

示例文件:

["String1", "String2", "oneMoreString"]

到目前为止,我认为我应该使用带有模式的扫描仪来获得我的输出,但没有做到这一点。

    ArrayList<String> strings = new ArrayList<String>();
    File f = new File("src/sample.txt");
    String pattern = "\\s*[\"\"]\\s*";
    try {
        InputStream is = new FileInputStream(f);
        Scanner s = new Scanner(is);
        s.useDelimiter(pattern);
        while (s.hasNext()){
            strings.add(s.next());
        }
        s.close();
        is.close();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

因为这个模式显然是错误的,因为它认为“,”是合适的,但我希望它不包括在内...: S

我也接受一些建议,这些建议可能会以任何其他方式被解析。也许是JSON解析器?但是因为文件太简单了,我认为没有必要。

共有3个答案

颛孙国源
2023-03-14
//split by ,
String strings[] = s.split(",");
//remove [ from first string
strings[0] = strings[0].substring(1);
//remove ] from last string
String last = strings[strings.length - 1];
strings[strings.length - 1] = last.substring(0, last.length() - 1);
孙佑运
2023-03-14

看到你的类路径中有杰克逊,简单地做:

ObjectMapper mapper = new ObjectMapper();
String[] array = mapper.readValue("[\"String1\", \"String2\", \"oneMoreString\"]", String[].class);
System.out.println(Arrays.toString(array));

将打印:

[String1, String2, oneMoreString]
孙鑫鹏
2023-03-14

最好使用像Jackson Mapper这样的JSON解析器来解析JSON字符串。

但是如果你有一个简单的字符串,你可以很快地对它使用一个正则表达式样本。

试试这个:

    String str = "[\"String1\", \"String2\", \"oneMoreString\"]";

    Pattern pattern = Pattern.compile("\"(.+?)\"");
    Matcher matcher = pattern.matcher(str);

    List<String> list = new ArrayList<String>();
    while (matcher.find()) {
        // System.out.println(matcher.group(1));.
        list.add(matcher.group(1));
    }
 类似资料:
  • 我试图在正则表达式中组合if-else,基本上,如果字符串中存在一些模式,则捕获一个模式,如果不存在,则捕获另一个模式。 字符串是:'https://www.searchpage.com/searchcompany.aspx?companyId=41490234 因此,如果在字符串中检测到“?”,则正则表达式应捕获“?”标记之后的所有内容;如果没有,那就从头抓起。 我使用了:

  • 问题内容: 我正在尝试使用运算符-+ * /将正则表达式拆分为1.5 + 4.2 *(5 + 2)等式,以便将输出输入到数组中,以便我可以单独解析 我发现可以使用,但是如果我要保留小数点,它将不会拆分。 我已经尝试过分割,但是它不会在小数点上分割 问题答案: 您还可以使用?:避免捕获组。我把它简化了。

  • 问题内容: 我正在寻找一种解析日志文件的解决方案。看起来像: 可以区分以下元素: 但我仍然不知道该怎么做。简单行不通。 我知道正则表达式具有一般规则,但最合适的是Java。 谢谢 问题答案: 我想出了一种根据可能的/期望的值从与各个字段匹配的块中构建正则表达式的方法。 当然,可以用rex代替rexa或rexi。

  • 本文向大家介绍java正则表达式的简单运用,包括了java正则表达式的简单运用的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了如何运用java正则表达式的方法,供大家参考,具体内容如下 1.是否匹配给定的模型 代码如下: 运行结果如下: 2.替换 代码如下: 运行结果如下: 3.去重 代码如下: 运行结果如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程

  • Java中的正则表达式问题。我正在从元素href属性中提取Id号。我在一个字符串中有一堆这样的链接:

  • 问题内容: 我正在尝试将JSON对象数组解析为C#中的字符串数组。我可以从JSON对象提取数组,但不能将数组字符串拆分为单个对象的数组。 我有这个测试字符串: 现在,我现在正在使用以下正则表达式将项目拆分为单个对象。现在,它们是2个单独的正则表达式,直到我解决第二个正则表达式为止: 在正则表达式的工作,我期望它,但对于原因,我不明白的方式,正则表达式不会在所有的工作。我要做的就是将各个项目拆分成自