package com.dpt.TNetwork.net.parse;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* Created by dupengtao on 2014/6/16.
*/
public class JacksonParser implements IBaseParser {
private static JacksonParser jacksonParser;
private final ObjectMapper objectMapper;
private JacksonParser() {
objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_DEFAULT);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
public static JacksonParser getInstance() {
if (jacksonParser == null) {
jacksonParser = new JacksonParser();
}
return jacksonParser;
}
public Map<String, String> readValue(String respons) {
try {
return JacksonParser.getInstance().objectMapper.readValue(respons, Map.class);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return new HashMap<String, String>();
}
public <T> T readValue(String response, Class<T> valueType) {
try {
return JacksonParser.getInstance().objectMapper.readValue(response, valueType);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
public <T> T toParse(String context, Class<T> clazz) {
return readValue(context,clazz);
}
}