All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.hamnaberg.json.pointer.JsonPointerParser Maven / Gradle / Ivy

package net.hamnaberg.json.pointer;


import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

class JsonPointerParser {
    List parse(String s) {
        List list = clean((s.startsWith("/") ? s.substring(1) : s).split("/"));
        return parse(list);
    }

    List parse(List parts) {
        ArrayList path = new ArrayList<>(parts.size());
        for (String p : parts) {
            if (p.equals("-")) {
                path.add(EndOfArray.INSTANCE);
            }
            else if (ArrayRef.pattern.matcher(p).matches()) {
                path.add(new ArrayRef(Integer.parseInt(p)));
            }
            else {
                path.add(new PropertyRef(p));
            }
        }
        return List.copyOf(path);
    }

    private List clean(String[] split) {
        return List.of(split).stream().map(this::unescape).collect(Collectors.toUnmodifiableList());
    }

    private String unescape(String str) {
        return str.replace("~1", "/").replace("~0", "~");
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy