json解析
1.json辅助类
package com.cloudtech.util;
import java.io.IOException;
import java.io.StringWriter;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* bean转json格式或者json转bean格式, 项目中我们通常使用这个工具类进行json---java互相转化
*/
public class JacksonUtil {
private static ObjectMapper mapper = new ObjectMapper();
public static String bean2Json(Object obj) throws IOException {
StringWriter sw = new StringWriter();
JsonGenerator gen = new JsonFactory().createJsonGenerator(sw);
mapper.writeValue(gen, obj);
gen.close();
return sw.toString();
}
public static <T> T json2Bean(String jsonStr, Class<T> objClass)
throws JsonParseException, JsonMappingException, IOException {
return mapper.readValue(jsonStr, objClass);
}
}
2.复杂事例
http接口返回list,如何处理?
ObjectMapper mapper = new ObjectMapper();
JavaType javaType = mapper.getTypeFactory().constructParametricType(List.class, BloomSky.class);
List<BloomSky> bloomSky = (List<BloomSky>)mapper.readValue(doGet, javaType);
注意:这里增加了一个@jsonProperty注解,这是为了解决大小写的问题,因为json工具默认是小写+驼峰。为了保证大写情况也能正常使用,需要增加注解