使用JackJSON 流式API 创建JSON串【学习记录】
教程网址:Jackson流式API
目标JSON串
原始JSON串
核心代码
思路:先将原始JSON串生成对应的对象,获取到其数据
package com.run.runlpwebdemo.utils;
import java.io.IOException;
import java.io.StringWriter;
import java.util.List;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.run.runlpwebdemo.bean.ana.AnaLabel;
import com.run.runlpwebdemo.bean.ana.AnaLabelList;
public class CreateLableUtil {
public static String labelJson(String value) throws IOException {
AnaLabelList AnaLabelList = JacksonUtil.readValue(value, AnaLabelList.class);
StringWriter sw = new StringWriter();
JsonFactory jasonFactory = new JsonFactory();
try {
JsonGenerator jsonGenerator = jasonFactory.createGenerator(sw);
jsonGenerator.writeStartObject();
jsonGenerator.writeNumberField("total", AnaLabelList.getResult().size());
jsonGenerator.writeArrayFieldStart("data");
for (AnaLabel label : AnaLabelList.getResult()) {
jsonGenerator.writeStartObject();
jsonGenerator.writeStringField("id", label.getLabelId());
jsonGenerator.writeArrayFieldStart("row");
jsonGenerator.writeString(label.getLabelName());
jsonGenerator.writeEndArray();
jsonGenerator.writeNumberField("status", label.getStatus());
jsonGenerator.writeEndObject();
}
jsonGenerator.writeEndArray();
jsonGenerator.writeEndObject();
jsonGenerator.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String json = sw.getBuffer().toString();
return json;
}
}
package com.run.runlpwebdemo.utils;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonUtil {
public static ObjectMapper objectMapper;
/**
* 使用泛型方法,把json字符串转换为相应的JavaBean对象。
* (1)转换为普通JavaBean:readValue(json,Student.class)
* (2)转换为List,如List<Student>,将第二个参数传递为Student
* [].class.然后使用Arrays.asList();方法把得到的数组转换为特定类型的List
*
* @param jsonStr
* @param valueType
* @return
*/
public static <T> T readValue(String jsonStr, Class<T> valueType) {
if (objectMapper == null) {
objectMapper = new ObjectMapper();
}
try {
return objectMapper.readValue(jsonStr, valueType);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* json数组转List
* @param jsonStr
* @param valueTypeRef
* @return
*/
public static <T> T readValue(String jsonStr, TypeReference<T> valueTypeRef){
if (objectMapper == null) {
objectMapper = new ObjectMapper();
}
try {
return objectMapper.readValue(jsonStr, valueTypeRef);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 把JavaBean转换为json字符串
*
* @param object
* @return
*/
public static String toJSon(Object object) {
if (objectMapper == null) {
objectMapper = new ObjectMapper();
}
try {
return objectMapper.writeValueAsString(object);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
对象属性,根据原始json串 的属性 创建对应的对象 自行生成set\get方法