public static <T> T ReadJson(String _strJson, Class<T> _class)
{
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
T t = null;
try {
t = objectMapper.readValue(_strJson, _class); // (1)这个地方需要依靠_class来进行Json语句的值解析
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return t;
}
import java.util.List;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
@JsonInclude(Include.NON_NULL)
public class MuyaLCResultsBean<T> {
public List<T> results;
public String className;
}
String strBody = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
MuyaLCResultsBean<MuyaLCFamilyBindRelationBean> bean = ReadJson(strBody, MuyaLCResultsBean.class);
MuyaLCFamilyBindRelationBean first = bean.results.get(0); // (2)此处报错,错误请参见下面
String strResult = first.ToJson();
System.out.println(strResult);
运行至(2)处,出现Exception:
Exception in thread "main" java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.aika.kidtracker.cloud.MuyaLCFamilyBindRelationBean
at com.aika.kidtracker.cloud.WebUtilMain.TestCQL(WebUtilMain.java:544)
at com.aika.kidtracker.cloud.WebUtilMain.main(WebUtilMain.java:66)
我的个人推断是,ReadJson()传入的第二个class只是MuyaLCResultsBean,因此,进行到(1)处时,
objectMapper.readValue(_strJson, _class);
是根本不知道真正要解析的类的具体格式,就默认解析成LinkHashMap了。
请高手帮助,如何修改代码?