package com.googlecode.totallylazy.json; import com.googlecode.totallylazy.functions.Function1; import com.googlecode.totallylazy.Pair; import com.googlecode.totallylazy.Sequence; import com.googlecode.totallylazy.parser.Result; import java.io.Reader; import java.util.List; import java.util.Map; import static com.googlecode.totallylazy.Unchecked.cast; public class Json { public static String json(Object value) { return JsonWriter.write(value, new StringBuilder()).toString(); } public static <V> Map<String, V> map(String json) { return Json.<V>parseMap(json).value(); } public static <V> List<V> list(String json) { return Json.<V>parseList(json).value(); } public static Object object(String json) { return parseObject(json).value(); } public static <V> Sequence<Pair<String, V>> pairs(Reader json) { return Json.<V>parsePairs(json).value(); } public static <V> Sequence<V> sequence(Reader json) { return Json.<V>parseSequence(json).value(); } public static <V> Result<Map<String, V>> parseMap(String json) { return cast(Grammar.OBJECT.parse(json)); } public static <V> Result<List<V>> parseList(String json) { return cast(Grammar.ARRAY.parse(json)); } public static Result<Object> parseObject(String json) { return Grammar.VALUE.parse(json); } public static <V> Result<Sequence<Pair<String, V>>> parsePairs(Reader json) { return cast(Grammar.PAIRS.parse(json)); } public static <V> Result<Sequence<V>> parseSequence(Reader json) { return cast(Grammar.SEQUENCE.parse(json)); } public static class functions { public static Function1<String, Map<String, Object>> toMap = Json::map; public static Function1<Object, String> toJson = Json::json; } }