diff --git a/JSONPointer.java b/JSONPointer.java index e5bc125..2b8bcd3 100644 --- a/JSONPointer.java +++ b/JSONPointer.java @@ -8,10 +8,22 @@ import java.net.URLDecoder; import java.util.ArrayList; import java.util.List; +/** + * A JSON Pointer is a simple query language defined for JSON documents by + * RFC 6901. + */ public class JSONPointer { private List refTokens; + /** + * Pre-parses and initializes a new {@code JSONPointer} instance. If you want to + * evaluate the same JSON Pointer on different JSON documents then it is recommended + * to keep the {@code JSONPointer} instances due to performance considerations. + * + * @param pointer the JSON String or URI Fragment representation of the JSON pointer. + * @throws IllegalArgumentException if {@code pointer} is not a valid JSON pointer + */ public JSONPointer(String pointer) { if (pointer == null) { throw new NullPointerException("pointer cannot be null"); @@ -44,6 +56,16 @@ public class JSONPointer { .replace("\\\\", "\\"); } + /** + * Evaluates this JSON Pointer on the given {@code document}. The {@code document} + * is usually a {@link JSONObject} or a {@link JSONArray} instance, but the empty + * JSON Pointer ({@code ""}) can be evaluated on any JSON values and in such case the + * returned value will be {@code document} itself. + * + * @param document the JSON document which should be the subject of querying. + * @return the result of the evaluation + * @throws JSONPointerException if an error occurs during evaluation + */ public Object queryFrom(Object document) { if (refTokens.isEmpty()) { return document;