/** * Copyright (C) 2013-2016 The Rythm Engine project * for LICENSE and other details see: * https://github.com/rythmengine/rythmengine */ package org.rythmengine.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.util.List; import java.util.Map; /** * Define a type to wrap a JSON string */ public class JSONWrapper { private JSON j_; /** * Construct a JSONWrapper with a JSON string. If the string is not valid JSON, then * a RuntimeException will thrown out * * @param str */ public JSONWrapper(String str) { if (S.empty(str)) throw new IllegalArgumentException("empty json str"); Object o; try { o = JSON.parse(str); } catch (com.alibaba.fastjson.JSONException e) { throw new RuntimeException("Invalid JSON string: " + str); } if (o instanceof JSON) { j_ = (JSON) o; } else { throw new RuntimeException("JSON string parse to unknown object type: " + o.getClass()); } } /** * Return true if the underline JSON data is an array * * @return true if the JSON data is an array */ public boolean isArray() { return j_ instanceof JSONArray; } /** * Return a List of object contained in the JSON array. * <p/> * <p></p>If the data is not a JSON array then a ClassCastException will * be thrown out</p> * * @return the List of objects */ public List<Object> getArray() { return (JSONArray) j_; } /** * Return a Map of String and object contained in the JSON object. * <p/> * <p></p>If the data is a JSON array then a ClassCastException will * be thrown out</p> * * @return the mapped json attributes */ public Map<String, Object> getObject() { return (JSONObject) j_; } /** * Parse the string and return the JSONWrapper * @param s * @return JSON wrapper of the string */ public static JSONWrapper wrap(String s) { if (S.empty(s)) { return null; } return new JSONWrapper(s); } }