Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using regex to parse a very simple JSON file

Tags:

java

json

regex

I'm not sure if it can be done, but I'd like to parse a very simple JSON file to an array of Strings.

Example file:

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

So far I thought I'd use Scanner with a pattern to get my output, but failed to do this.

    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();
    }

because the pattern is clearly wrong, since it considers ", " as it fits, but I'd like it wouldn't be included... :S

I also accept suggestions that may work to any other way this can be parsed. Maybe a JSON parser? but because the file is so simple I didn't consider it necessary.

like image 394
Daren Avatar asked Mar 22 '23 08:03

Daren


1 Answers

It is better to use a JSON parser like Jackson Mapper to parse a JSON String.

But to if you have a simple String you can use a sample Regular expression to it quickly.

Try this out:

    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));
    }
like image 70
Ankur Shanbhag Avatar answered Mar 31 '23 20:03

Ankur Shanbhag