package foundation.json; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import foundation.translator.Translator; import foundation.util.Util; public class JValueReader extends JSONReader { private Object value; public JValueReader(String name) { this.name = name; this.type = JType.getInstance(value); } public JValueReader(String name, Object value) { this.name = name; this.value = value; this.type = JType.getInstance(value); } @Override public boolean isEmpty() { return Util.isEmpty(value); } @Override public boolean has(String name) { return false; } @Override public JType getType(String name) { return JType.Empty; } @Override public boolean hasChildren() { return false; } @Override public Object getValue() { return value; } @Override public Object getValue(String name) { return value; } @Override public Object getValue(String name, Object defaultValue) { return (value == null) ? defaultValue : value; } @Override public String getRawString(String name) { String result = null; try { result = Translator.toString(value); if (result == null) { return null; } return result; } catch (Exception e) { e.printStackTrace(); } return result; } @Override public String getString(String name) { return getDecodeString(name); } @Override public String getString(String name, String defaultValue) { return getDecodeString(name, defaultValue); } @Override public String getDecodeString(String name) { return getDecodeString(name, null); } @Override public String getDecodeString(String name, String defaultValue) { String result = null; try { result = Translator.toString(value); if (result == null) { return null; } result = URLDecoder.decode(result, "UTF-8"); return result; } catch (Exception e) { result = defaultValue; } return result; } @Override public Set getStringSet() { if (value == null) { return null; } Set result = new HashSet(); result.add(value.toString()); return result; } @Override public List getStringList() { if (value == null) { return null; } ArrayList result = new ArrayList(); result.add(value.toString()); return result; } @Override public Set getStringSet(String name) { if (value == null) { return null; } Set result = new HashSet(); result.add(value.toString()); return result; } @Override public List getStringList(String name) { if (value == null) { return null; } ArrayList result = new ArrayList(); result.add(value.toString()); return result; } @Override public Integer getInteger(Integer defaultValue) { Integer result = Translator.toInteger(value, defaultValue); return result; } @Override public Integer getInteger(String name, Integer defaultValue) { return getInteger(defaultValue); } @Override public boolean getBoolean(boolean defaultValue) { boolean result = Translator.toBoolean(value, defaultValue); return result; } @Override public boolean getBoolean(String name, boolean defaultValue) { return getBoolean(defaultValue); } @Override public T getReader(String name, JType type) { return null; } @Override protected void putReader(String name, JSONReader reader) { if (reader instanceof JValueReader) { this.value = reader.getValue(); } return; } @Override protected void putValue(String name, Object value) { this.value = value; } @Override protected void putValue(Object value) { this.value = value; } public void setValue(Object value) { this.value = value; } @Override public Iterator iterator() { return new EmptyIterator(); } public static void main(String[] args) throws UnsupportedEncodingException { String value = "record_no%20like%20'%25BA010%25'"; String result = URLDecoder.decode(value, "UTF-8"); System.out.println(result); } }