使用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方法

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古月_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值