package org.nutz.mvc.adaptor;
import java.lang.reflect.Type;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.nutz.json.Json;
import org.nutz.lang.Lang;
import org.nutz.lang.Streams;
import org.nutz.mvc.adaptor.injector.JsonInjector;
import org.nutz.mvc.annotation.Param;
/**
* 假设,整个输入输入流,是一个 JSON 字符串
*
* @author zozoh(zozohtnt@gmail.com)
* @author wendal(wendal1985@gmail.com)
*/
public class JsonAdaptor extends PairAdaptor {
protected ParamInjector evalInjector(Type type, Param param) {
if (param == null || "..".equals(param.value()))
return new JsonInjector(type, null);
return super.evalInjector(type, param);
}
public Object getReferObject( ServletContext sc,
HttpServletRequest req,
HttpServletResponse resp, String[] pathArgs) {
// Read all as String
try {
//TODO URL传来的参数会丢失
return Json.fromJson(Streams.utf8r(req.getInputStream()));
}
catch (Exception e) {
throw Lang.wrapThrow(e);
}
}
}