跪求懂json的大神!

xulianzhen 2016-07-12 08:53:41

如何将复杂的json字符串转java对象?
json字符串:
{"createTime":"2016-07-05 08:08:08","cityName":"杭州","orderItems":"[{\"skuId\":\"1008604\",\"count\":2,\"unitPrice\":8.88},{\"skuId\":\"1008605\",\"count\":1,\"unitPrice\":6.66}]"}]

javaBean:
public class Order{
private String cityName;
private String createTime;
private List<OrderItem> orderItemList;

// 省略getter和setter方法。。。
}

工具:fastjson
使用Order Order = (Order) JSON.parseObject(data, Order.class);该方法转换发现orderItemList为空,如果处理才能正确解析让orderItemList不为空呢?
...全文
196 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35517879 2016-07-13
  • 打赏
  • 举报
回复
我觉得这种情况用jackson比较好一点,因为jackson是逐层解析的。兼容性比较高,如果用fastjson的话碰到你这样的情况还是要再次转换的。
qq_35517879 2016-07-13
  • 打赏
  • 举报
回复
sad水电费水电费
于大圣 2016-07-13
  • 打赏
  • 举报
回复
在对JSON格式的字符串<->Java对象互相转化时,一定要注意Java类属性的名字和JSON字符串里面的属性的名字一定要一致,切记!!然后底层解析框架运用反射将解析出来的属性值构造完一个对象,你这边解析为空,说明没有做到一致,确认下!
bree06 2016-07-13
  • 打赏
  • 举报
回复
楼上是正解, 参数名字不一样. 对象里是orderItemList 但是json串里是orderItems,
missMeyo 2016-07-12
  • 打赏
  • 举报
回复
package com.imooc.tag;

import com.alibaba.fastjson.JSON;

public class TagMain {
	public static void main(String[] args) {
		Order order = JSON.parseObject("{\"createTime\":\"2016-07-05 08:08:08\",\"cityName\":\"杭州\",\"orderItems\":[{\"skuId\":\"1008604\",\"count\":2,\"unitPrice\":8.88},{\"skuId\":\"1008605\",\"count\":1,\"unitPrice\":6.66}]}",
				   Order.class);
	    
		for (OrderItem orderItem : order.getOrderItems()) {
			System.out.println(orderItem);
		}
	}
}
package com.imooc.tag;

import java.util.List;

public class Order {
	private String cityName;
	private String createTime;
	private List<OrderItem> orderItems;
	
	public String getCityName() {
		return cityName;
	}
	public void setCityName(String cityName) {
		this.cityName = cityName;
	}
	public String getCreateTime() {
		return createTime;
	}
	public void setCreateTime(String createTime) {
		this.createTime = createTime;
	}
	public List<OrderItem> getOrderItems() {
		return orderItems;
	}
	public void setOrderItems(List<OrderItem> orderItems) {
		this.orderItems = orderItems;
	}
}
package com.imooc.tag;

public class OrderItem {
	private String skuId;
	private Integer count;
	private Integer unitPrice;
	
	public String getSkuId() {
		return skuId;
	}
	public void setSkuId(String skuId) {
		this.skuId = skuId;
	}
	public Integer getCount() {
		return count;
	}
	public void setCount(Integer count) {
		this.count = count;
	}
	public Integer getUnitPrice() {
		return unitPrice;
	}
	public void setUnitPrice(Integer unitPrice) {
		this.unitPrice = unitPrice;
	}
	
	@Override
	public String toString() {
		return "OrderItem [skuId=" + skuId + ", count=" + count + ", unitPrice=" + unitPrice + "]";
	}
}

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧