package org.fastcatsearch.util; import net.minidev.json.JSONAwareEx; import net.minidev.json.parser.ParseException; import net.minidev.json.writer.JsonReader; import net.minidev.json.writer.JsonReaderI; import java.io.Reader; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import static net.minidev.json.parser.JSONParser.MODE_JSON_SIMPLE; /** * Created by swsong on 2016. 2. 11.. */ public class JSONParser { private net.minidev.json.parser.JSONParser parser; private JsonMapperLowerKey mapper; public JSONParser() { this(MODE_JSON_SIMPLE); } public JSONParser(int mode) { mapper = new JsonMapperLowerKey(new JsonReader()); parser = new net.minidev.json.parser.JSONParser(mode); } public Map<String, Object> parse(String jsonString) throws ParseException { return parser.parse(jsonString, mapper); } public Map<String, Object> parse(Reader reader) throws ParseException { return parser.parse(reader, mapper); } class JsonMapperLowerKey extends JsonReaderI<Map<String, Object>> { /** * Reader can be link to the JsonReader Base * * @param base */ public JsonMapperLowerKey(JsonReader base) { super(base); } @Override public JsonReaderI<JSONAwareEx> startObject(String key) { return base.DEFAULT; } @Override public JsonReaderI<JSONAwareEx> startArray(String key) { return base.DEFAULT; } @Override public Object createObject() { return new HashMap<String, Object>(); } @Override public Object createArray() { return new ArrayList<Object>(); } @Override public void setValue(Object current, String key, Object value) { ((Map<String, Object>) current).put(key.toLowerCase(), value); } @Override public void addValue(Object current, Object value) { ((List<Object>) current).add(value); } } }