/** * Copyright (c) 2015-2016, BruceZCQ (zcq@zhucongqi.cn). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.jfinal.ext2.kit; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.jfinal.log.Log; import com.jfinal.plugin.activerecord.Model; import com.jfinal.plugin.activerecord.Record; /** * @author BruceZCQ * */ final public class JsonExtKit { private static Log log = Log.getLog(JsonExtKit.class); /** * json string to JSONObject * @param json * @return */ public static JSONObject jsonToObject(String json){ return JSON.parseObject(json); } /** * json to array * @param <T> * @param json * @return */ public static JSONArray jsonToJSONArray(String json) { return JSON.parseArray(json); } /** * json to array * @param json * @return */ public static Object[] jsonToObjArray(String json) { return JsonExtKit.jsonToJSONArray(json).toArray(); } /** * json string to map * @param json * @return */ @SuppressWarnings("unchecked") public static <K,V> Map<K,V> jsonToMap(String json){ JSONObject obj = jsonToObject(json); Map<K, V> map = new HashMap<K, V>(); Iterator<String> keyIterator = obj.keySet().iterator(); while (keyIterator.hasNext()) { Object key = keyIterator.next(); Object value = obj.get(key); if (value instanceof JSONObject) { value = jsonToMap(((JSONObject) value).toJSONString()); } map.put((K)key, (V)value); } return map; } /** * json String to Model<T extends Model<T>> * @param json * @param clazz * @return */ public static <T extends Model<T>> Model<T> jsonToModel(String json, Class<T> clazz){ Model<T> model = null; try { model = clazz.newInstance(); } catch (InstantiationException e) { JsonExtKit.log.error(e.getLocalizedMessage()); } catch (IllegalAccessException e) { JsonExtKit.log.error(e.getLocalizedMessage()); } Map<String, Object> attrs = jsonToMap(json); return model._setAttrs(attrs); } /** * json to Record * @param json * @return */ public static Record jsonToRecord(String json){ Map<String,Object> map = jsonToMap(json); return new Record().setColumns(map); } }