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

使用jsonschema2pojo生成POJO后,如何获取List内的distance.inMeters属性比较?

解决List嵌套结构中获取inMeters属性的问题

嘿,我完全懂你现在的困扰——用jsonschema2pojo生成的POJO里,distance的inMeters藏在多层List嵌套里,没法直接通过对象点属性拿到对吧?别慌,咱们一步步拆解这个问题。

首先,先明确你生成的POJO结构应该和你的JSON层级对应。根据你提供的JSON示例,生成的类大概会是这样的(类名可能略有不同,但核心层级一致):

public class DistanceResponse {
    private List<String> originAddresses;
    private List<String> destinationAddresses;
    private List<Row> rows;

    // 自动生成的getter、setter、toString等方法

    public static class Row {
        private List<Element> elements;

        // getter、setter
    }

    public static class Element {
        private Distance distance;

        // getter、setter
    }

    public static class Distance {
        private long inMeters;
        private String text;

        // getter、setter
    }
}

简单说,层级关系是:DistanceResponse → rows(List)→ elements(List)→ distance → inMeters。接下来分两种场景解决:

场景1:遍历所有inMeters进行比较

如果需要对所有目的地的距离都做数值比较,直接嵌套遍历List就行:

// 假设你已经把JSON解析成了DistanceResponse对象
DistanceResponse response = yourJsonParsingMethod(jsonContent);

// 遍历每一行(通常origin到多个destination会对应一行)
for (DistanceResponse.Row row : response.getRows()) {
    // 遍历该行下的每个目的地距离元素
    for (DistanceResponse.Element element : row.getElements()) {
        long currentDistance = element.getDistance().getInMeters();
        // 这里就可以做数值比较了
        if (currentDistance < 500) {
            System.out.println("这个目的地离起点不到500米");
        }
    }
}

场景2:获取特定位置的inMeters

如果你只需要某个特定目的地的距离(比如第一个),可以直接通过List索引获取,但要注意先判断List是否为空,避免空指针异常:

DistanceResponse response = yourJsonParsingMethod(jsonContent);

// 先判断rows和elements是否非空
if (!response.getRows().isEmpty()) {
    DistanceResponse.Row firstRow = response.getRows().get(0);
    if (!firstRow.getElements().isEmpty()) {
        long firstDestinationDistance = firstRow.getElements().get(0).getDistance().getInMeters();
        // 进行你需要的数值比较,比如:
        if (firstDestinationDistance > 1000) {
            System.out.println("第一个目的地离起点超过1公里");
        }
    }
}

小提示

如果你的POJO里的属性名和我上面写的不一样(比如可能叫results而不是rows),别担心——jsonschema2pojo生成的属性名是和JSON字段对应的,你可以看生成类里的getter方法(比如getResults()),或者直接查看POJO类的源码确认层级结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:10:45