package com.akjava.gwt.lib.client; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.json.client.JSONArray; import com.google.gwt.json.client.JSONBoolean; import com.google.gwt.json.client.JSONNumber; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONString; import com.google.gwt.json.client.JSONValue; public class JsonValueUtils { public static native final String stringify(JavaScriptObject json)/*-{ return $wnd.JSON.stringify(json,null,2); }-*/; public static String getString(JSONObject object,String key,String defaultValue){ if(object==null){ return defaultValue; } JSONValue value=object.get(key); if(value==null){ return defaultValue; } JSONString jsonString=value.isString(); if(jsonString==null){ return defaultValue; } return jsonString.stringValue(); } public static JSONObject getObject(JSONObject object,String key,JSONObject defaultValue){ if(object==null){ return defaultValue; } JSONValue value=object.get(key); if(value==null){ return defaultValue; } JSONObject jsonString=value.isObject(); if(jsonString==null){ return defaultValue; } return jsonString; } public static double getNumber(JSONObject object,String key,double defaultValue){ if(object==null){ return defaultValue; } JSONValue value=object.get(key); if(value==null){ return defaultValue; } JSONNumber jsonString=value.isNumber(); if(jsonString==null){ return defaultValue; } return jsonString.doubleValue(); } public static boolean getBoolean(JSONObject object,String key,boolean defaultValue){ if(object==null){ return defaultValue; } JSONValue value=object.get(key); if(value==null){ return defaultValue; } JSONBoolean jsonString=value.isBoolean(); if(jsonString==null){ return defaultValue; } return jsonString.booleanValue(); } public static List<JSONObject> convertToJSONObjectList(JSONArray array){ List<JSONObject> list=new ArrayList<JSONObject>(); for(int i=0;i<array.size();i++){ JSONValue value=array.get(i); JSONObject object=value.isObject(); if(object!=null){ list.add(object); }else{ LogUtils.log(i+" is not object"); } } return list; } public static JSONObject convertToJson(Map<String,String> map){ JSONObject object=new JSONObject(); for(String key:map.keySet()){ JSONString valueString=new JSONString(map.get(key)); object.put(key, valueString); } return object; } public static Map<String,String> createMap(JSONValue json){ HashMap<String,String> map=new HashMap<String, String>(); JSONObject obj=json.isObject(); if(obj!=null){ for(String key:obj.keySet()){ JSONValue value=obj.get(key); JSONString valueJson=value.isString(); if(valueJson!=null){ map.put(key, valueJson.stringValue()); } } } return map; } }