package com.litesuits.http.parser.impl;
import com.litesuits.http.data.Json;
import com.litesuits.http.parser.MemCacheableParser;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Type;
/**
* parse inputstream to java model.
*
* @author MaTianyu
* 2014-4-19
*/
public class JsonParser<T> extends MemCacheableParser<T> {
protected Type claxx;
protected String json;
public JsonParser(Type claxx) {
this.claxx = claxx;
}
@Override
protected T parseNetStream(InputStream stream, long totalLength
, String charSet) throws IOException {
json = streamToString(stream, totalLength, charSet);
return Json.get().toObject(json, claxx);
}
@Override
protected T parseDiskCache(InputStream stream, long length) throws IOException {
json = streamToString(stream, length, charSet);
return Json.get().toObject(json, claxx);
}
@Override
protected boolean tryKeepToCache(T data) throws IOException {
return keepToCache(json);
}
/**
* get the row string
*/
@Override
public String getRawString() {
return json;
}
/**
* get the json model
*/
public <C> C getJsonModel(Class<C> claxx) {
return Json.get().toObject(json, claxx);
}
@Override
public String toString() {
return "JsonParser{" +
"claxx=" + claxx +
"} " + super.toString();
}
}