gpt4 book ai didi

java - 使用 pojo 数组将 Json 数组转换为 Pojo 时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:20:14 26 4
gpt4 key购买 nike

JSON 字符串

{
"order":{
"address":{
"city":"seattle"
},
"orderItem":[
{
"itemId":"lkasj",
"count":2
},
{
"itemId":"ldka",
"count":3
}
]
}
}

订单类别

public class Order {
private OrderItem[] orderItems;
private CustomerAddress address;

Order(OrderItem[] orderItems, CustomerAddress address ) {
this.orderItems = orderItems;
this.address = address;

}

public OrderItem[] getOrderItems() {
return orderItems;
}

public void setOrderItems(OrderItem[] orderItems) {
this.orderItems = orderItems;
}

public CustomerAddress getAddress() {
return address;
}

public void setAddress(CustomerAddress address) {
this.address = address;
}
}

我的 OrderItem 类 包 com.cbd.backend.model;

import org.springframework.data.annotation.Id;

public class OrderItem {
@Id
private String id;
private String itemId;
private String count;

public String getId() {
return id;
}

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

unit Test that blows up

public String getItemId() {
return itemId;
}

public void setItemId(String itemId) {
this.itemId = itemId;
}

public String getCount() {
return count;
}

public void setCount(String count) {
this.count = count;
}
}

用于演示问题的单元测试 包 com.cbd.backend.model;

import com.google.gson.Gson;
import org.junit.Test;
import static org.junit.Assert.*;
public class OrderTest {

Gson gson = new Gson();
@Test
public void gsonToOrder() {
Order order = gson.fromJson( a, Order.class );
assertNotNull(order);
assertNotNull(order.getOrderItems()[0]);
}
private final String a = "{ \"order\": { \"address\": { \"city\": \"seattle\" },\"orderItem\":[{ \"itemId\":\"lkasj\", \"count\":2 }, { \"itemId\":\"ldka\", \"count\":3 } ] } }";
}

我应该使用 gson 以外的东西还是我错误地构建了它

最佳答案

您的代码中有两个问题:

  1. JSON 的根元素是“order”,但该类没有具有此名称的属性。尝试更改模型或仅从 JSON 中删除元素。
  2. “orderItem”属性的名称不匹配。它在类中是复数,但在 JSON 中是单数。

总而言之,以下 JSON 无需对代码进行任何更改即可运行。

{
"address":{
"city":"seattle"
},
"orderItems":[
{
"itemId":"lkasj",
"count":2
},
{
"itemId":"ldka",
"count":3
}
]
}

此外,JSON 中显示的“count”似乎是数字,因此您可能需要将 OrderItem.count 的类型更改为 intjava.lang.Integer

关于java - 使用 pojo 数组将 Json 数组转换为 Pojo 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38928712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com