+
 新版

Jackson json转bean,请教一下这种格式的要怎么处理?

艺设院长 发布于 2018/06/20 18:10
阅读 998
收藏 0

服务器返回的json格式,比常见的多了一个Tag节点

{
	'tags': [{
			'Tag': {
				'id': 'red',
				'name': 'red'
			}
		},
		{
			'Tag': {
				'id': 'cool',
				'name': 'cool'
			}
		},
		{
			'Tag': {
				'id': 'shoe',
				'name': 'shoe'
			}
		}
	]
}

jackson jsonToBean方法
 

public static  <T> T fromJson(String json,Class<T> clazz, boolean withRoot) throws Exception{
        if(StringUtils.isBlank(json)){
            return clazz.newInstance();
        }
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
        JsonNode jsonNode = mapper.readTree(json);
        if(withRoot){
            JsonRootName jsonRootName = clazz.getAnnotation(JsonRootName.class);
            if(jsonRootName!=null){
                String rootName = jsonRootName.value();
                jsonNode = jsonNode.path(rootName);
            }
        }
        T t = mapper.readValue(jsonNode.toString(), clazz);
        return t;
    }

 

加载中
1
kakai
kakai
import java.util.List;

public class JsonBean {
    private List<JsonBeanTag> tags = new ArrayList<>();

    public List<JsonBeanTag> getTags() {
        return tags;
    }

    public void setTags(List<JsonBeanTag> tags) {
        this.tags = tags;
    }
}

public class JsonBeanTag {
    @JsonProperty //此注解指明将大写转为可识别的属性
    private JsonBeanTagImpl Tag;

    @JsonIgnore //忽略,不然会有个大写,有个小写的
    public JsonBeanTagImpl getTag() {
        return Tag;
    }

    @JsonIgnore
    public void setTag(JsonBeanTagImpl tag) {
        this.Tag = tag;
    }
}

public class JsonBeanTagImpl {
    private String id;
    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
mapper.readValue(你的json字符串, JsonBean.class);

祝您工作顺利!

0
春暖花又开
春暖花又开

首先你得会java

0
kakai
kakai

你的bean结构是怎样的?

我的用法就是mapper.readValue(json, type);这一句就解决了。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部