java异常 json_把一个字符串的json转化成java对象出现异常

把一个json格式的字符串转化成对应的对象出错,下面的是具体的代码的抛出的异常。希望大神指点一下

下面是把sting类型转化成json类型的工具类,其中formatToList为转换方法

package com.taotao.common.bean;

import java.io.IOException;

import java.util.List;

import com.fasterxml.jackson.databind.JsonNode;

import com.fasterxml.jackson.databind.ObjectMapper;

/**

* 返回的结果集类型

*

* @author Administrator

*

*/

public class EasyUIResult {

private Integer total;// 查询返回的总行数

private List> rows;// 查询返回的结果集

private static final ObjectMapper MAPPER = new ObjectMapper();

public EasyUIResult() {

}

public EasyUIResult(Integer total, List> rows) {

super();

this.total = total;

this.rows = rows;

}

public EasyUIResult(Long total, List> rows) {

super();

this.total = total.intValue();

this.rows = rows;

}

public Integer getTotal() {

return total;

}

public void setTotal(Integer total) {

this.total = total;

}

public List> getRows() {

return rows;

}

public void setRows(List> rows) {

this.rows = rows;

}

/**

* 集合转换

*

* @param jsonData json数据

* @param clazz 集合中的类型

* @return

*/

public static EasyUIResult formatToList(String jsonData, Class> clazz) {

try {

JsonNode jsonNode = MAPPER.readTree(jsonData);

//获取rows的数据

JsonNode data = jsonNode.get("rows");

List> list = null;

if (data.isArray() && data.size() > 0) {

//下面代码会报错,不知道为什么,求大神指点

list = MAPPER.readValue(data.traverse(),

MAPPER.getTypeFactory().constructCollectionLikeType(List.class, clazz));

}

//生成对应的EasyUIResult对象

return new EasyUIResult(jsonNode.get("total").intValue(), list);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

return null;

}

}

} 在给出Content的javaBean

package com.taotao.manage.pojo;

import javax.persistence.Column;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.Table;

@Table(name = "tb_content")

public class Content extends BasePojo {

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

private Long id;

@Column(name = "category_id")

private Long categoryId;

private String title;

@Column(name = "sub_title")

private String subTitle;

@Column(name = "title_desc")

private String titleDesc;

private String url;

private String pic;

private String pic2;

private String content;

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public Long getCategoryId() {

return categoryId;

}

public void setCategoryId(Long categoryId) {

this.categoryId = categoryId;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getSubTitle() {

return subTitle;

}

public void setSubTitle(String subTitle) {

this.subTitle = subTitle;

}

public String getTitleDesc() {

return titleDesc;

}

public void setTitleDesc(String titleDesc) {

this.titleDesc = titleDesc;

}

public String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

public String getPic() {

return pic;

}

public void setPic(String pic) {

this.pic = pic;

}

public String getPic2() {

return pic2;

}

public void setPic2(String pic2) {

this.pic2 = pic2;

}

public String getContent() {

return content;

}

public void setContent(String content) {

this.content = content;

}

}

下面是调用上面方法的测试代码

package com.taotao.taotaoweb.test;

import java.io.FileReader;

import java.io.IOException;

import java.util.List;

import java.util.Properties;

import org.junit.Test;

import com.fasterxml.jackson.databind.JsonNode;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.taotao.common.bean.EasyUIResult;

import com.taotao.manage.pojo.Content;

public class EasyUITest {

private static final ObjectMapper MAPPER = new ObjectMapper();

@Test

public void test_1() throws Exception{

Properties properties = new Properties();

//读取本地磁盘中的字符串,在下面给出文件信息

FileReader fileReader = new FileReader("D:\\project\\taotaoshop\\test\\easyUI.properties");

properties.load(fileReader);

String jsonData = properties.getProperty("data");

System.out.println(jsonData);

EasyUIResult.formatToList(jsonData, Content.class);

}

} 使用的jackson的版本的坐标为

com.fasterxml.jackson.core

jackson-core

2.4.2

junit运行时,报如下的异常:

f3c796ff569da8d921d8537ca023eac4.png

引用的本地文件说明:读取本地的文件内容如下:

data={"total":7,"rows":[{"created":1474546053000,"updated":1474546053000,"id":12,"categoryId":3,"title":"AD8","subTitle":"","titleDesc":"","url":"","pic":"http://image.taotao.com:81/images/2016/09/22/2016092208073028102522.jpg","pic2":"","content":""},{"created":1474193162000,"updated":1474193162000,"id":9,"categoryId":3,"title":"AD6","subTitle":"","titleDesc":"","url":"http://ad6","pic":"http://image.taotao.com:81/images/2016/09/18/201609180606008150399.jpg","pic2":"","content":""},{"created":1474193146000,"updated":1474193146000,"id":8,"categoryId":3,"title":"AD5","subTitle":"","titleDesc":"","url":"http://ad5","pic":"http://image.taotao.com:81/images/2016/09/18/2016091806054459107740.jpg","pic2":"","content":""},{"created":1474193127000,"updated":1474193127000,"id":7,"categoryId":3,"title":"AD4","subTitle":"","titleDesc":"","url":"http://ad4","pic":"http://image.taotao.com:81/images/2016/09/18/2016091806052540706320.jpg","pic2":"","content":""},{"created":1474193103000,"updated":1474193103000,"id":6,"categoryId":3,"title":"AD3","subTitle":"","titleDesc":"","url":"http://ad3","pic":"http://image.taotao.com:81/images/2016/09/18/2016091806050121902954.jpg","pic2":"","content":""},{"created":1474193083000,"updated":1474193083000,"id":5,"categoryId":3,"title":"AD2","subTitle":"","titleDesc":"","url":"http://ad2","pic":"http://image.taotao.com:81/images/2016/09/18/2016091806044232709620.jpg","pic2":"","content":""}]}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值