使用JackJSON 流式API 创建JSON串【学习记录】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyande123/article/details/82900256

教程网址: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方法

猜你喜欢

转载自blog.csdn.net/huyande123/article/details/82900256
今日推荐