You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java嵌套循环取值异常:无法正确提取PromoItem的itemCode

如何提取PromoItem的具体itemCode值并整理成指定格式?

问题背景

我需要通过循环获取区域(territory)及其对应的商品列表,但始终无法正确提取PromoItem的有效itemCode值:要么itemCode为null,要么得到的是整个PromoItem对象列表的字符串形式,而非单独的itemCode内容。

查询到的实体数据集

PricingRuleEntity(territory=Maryland, items=[PromoItem(itemCode=Nivea Men Box (12.0 PC), name=5e0648a9e5, uom=null), PromoItem(itemCode=Dove Men Box (6.0 Box), name=d805f9bb9d, uom=null)])

我的循环代码

List<Territory> territories = new ArrayList<>();
for(PricingRuleEntity pricingRuleEntity: pricing){
    Territory territory = new Territory();
    territory.setTerritory(pricingRuleEntity.getTerritory());
    territory.setListItems(pricingRuleEntity.getItems());
    for(Territory itemCode: territories) {
        PromoItem itemCode1 = new PromoItem();
        itemCode1.setItemCode(String.valueOf(itemCode1.getItemCode()));
        territories.add(itemCode);
    }

    territories.add(territory);
}

System.out.println(territories);

实体类定义

PricingRuleEntity

@Entity
@Data
@Table(name = "pricing_rule")
public class PricingRuleEntity extends BaseEntity {
   
    @Column(name = "territory", nullable = false)
    private String territory;

    @Type(type = "json")
    @Column(columnDefinition = "JSON")
    public List<PromoItem> items;
}

Territory

@Data
public class Territory {
    @JsonProperty("territory")
    String territory;
    @JsonProperty("listItems")
    List<PromoItem> listItems;
}

PromoItem

@Data
public class PromoItem {
    @JsonProperty("item_code")
    String itemCode;
    @JsonProperty("name")
    String name;
    @JsonProperty("uom")
    Integer uom;
}

之前的尝试结果

  1. 初始代码运行后,PromoItem的itemCode始终为null:
itemCode1: PromoItem(itemCode=null, name=null, uom=null)
  1. 按照@ScaryWombat的建议修改代码,将itemCode1.setItemCode(String.valueOf(itemCode1.getItemCode()));替换为itemCode1.setItemCode(String.valueOf(itemCode.getListItems()));后,得到的结果是把整个PromoItem列表转为字符串赋值给了itemCode,并非预期的单独itemCode值:
PromoItem(itemCode=[PromoItem(itemCode=Nivea Men Box (12.0 PC), name=5e0648a9e5, uom=null), PromoItem(itemCode=Zesta Jam Box (5.0 pcs), name=d805f9bb9d, uom=null)], name=null, uom=null)

预期需求

我需要提取每个PromoItem的具体itemCode值,整理成类似(Nivea Men Box (12.0 PC), Zesta Jam Box (5.0 pcs))的格式,请问该如何修改代码?


内容的提问来源于stack exchange,提问作者justrying

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:48:20