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

如何解析含嵌套对象的JSON数组?用Quicktype生成数据模型

基于给定JSON生成解析模型

给定如下JSON响应数据,需生成对应的解析模型:

{
        "code": "0",
        "message": "Success!",
        "data": {
            "firstName": "hello",
            "lastName": "world",
            "mobile1": "123456789",
            "mobile2": "123456789",
            "cities": [
                {
                    "Dubai": [
                        {
                            "id": 17,
                            "value": "Dubai",
                            "selected": false
                        }
                    ]
                },
                {
                    "Ajman": [
                        {
                            "id": 29,
                            "value": "Ajman",
                            "selected": false
                        }
                    ]
                },
                {
                    "Fujairah": [
                        {
                            "id": 30,
                            "value": "Fujairah",
                            "selected": false
                        }
                    ]
                },
                {
                    "Ras Al Khaimah": [
                        {
                            "id": 31,
                            "value": "Ras Al Khaimah",
                            "selected": false
                        }
                    ]
                },
                {
                    "Um Ul Quwein": [
                        {
                            "id": 32,
                            "value": "Umm Al Quwein",
                            "selected": false
                        }
                    ]
                },
                {
                    "AbuDhabi": [
                        {
                            "id": 33,
                            "value": "Al Ain",
                            "selected": false
                        },
                        {
                            "id": 34,
                            "value": "Abu Dhabi",
                            "selected": false
                        }
                    ]
                },
                {
                    "Sharjah": [
                        {
                            "id": 35,
                            "value": "Sharjah",
                            "selected": true
                        }
                    ]
                }
            ],
            "picture": "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/640px-Image_created_with_a_mobile_phone.png"
        }
    }

生成的解析模型(以Java为例)

由于原JSON中cities数组的元素是动态键名的对象,解析时需用Map<String, List<CityOption>>来表示单个城市项:

import com.google.gson.annotations.SerializedName;
import java.util.List;
import java.util.Map;

public class ApiResponse {
    @SerializedName("code")
    private String code;

    @SerializedName("message")
    private String message;

    @SerializedName("data")
    private Data data;

    // Getters and Setters
    public String getCode() { return code; }
    public void setCode(String code) { this.code = code; }

    public String getMessage() { return message; }
    public void setMessage(String message) { this.message = message; }

    public Data getData() { return data; }
    public void setData(Data data) { this.data = data; }

    public static class Data {
        @SerializedName("firstName")
        private String firstName;

        @SerializedName("lastName")
        private String lastName;

        @SerializedName("mobile1")
        private String mobile1;

        @SerializedName("mobile2")
        private String mobile2;

        @SerializedName("cities")
        private List<Map<String, List<CityOption>>> cities;

        @SerializedName("picture")
        private String picture;

        // Getters and Setters
        public String getFirstName() { return firstName; }
        public void setFirstName(String firstName) { this.firstName = firstName; }

        public String getLastName() { return lastName; }
        public void setLastName(String lastName) { this.lastName = lastName; }

        public String getMobile1() { return mobile1; }
        public void setMobile1(String mobile1) { this.mobile1 = mobile1; }

        public String getMobile2() { return mobile2; }
        public void setMobile2(String mobile2) { this.mobile2 = mobile2; }

        public List<Map<String, List<CityOption>>> getCities() { return cities; }
        public void setCities(List<Map<String, List<CityOption>>> cities) { this.cities = cities; }

        public String getPicture() { return picture; }
        public void setPicture(String picture) { this.picture = picture; }
    }

    public static class CityOption {
        @SerializedName("id")
        private int id;

        @SerializedName("value")
        private String value;

        @SerializedName("selected")
        private boolean selected;

        // Getters and Setters
        public int getId() { return id; }
        public void setId(int id) { this.id = id; }

        public String getValue() { return value; }
        public void setValue(String value) { this.value = value; }

        public boolean isSelected() { return selected; }
        public void setSelected(boolean selected) { this.selected = selected; }
    }
}

说明

  • cities数组中的每个元素是一个键值对,键为城市名称(如Dubai、Ajman),值为该城市下的选项列表,因此用List<Map<String, List<CityOption>>>来适配这种动态结构。
  • 模型使用Gson的SerializedName注解来确保JSON字段与Java类属性的映射,避免因命名规范差异导致解析错误。

内容的提问来源于stack exchange,提问作者Muhammad Farooq Iqbal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:45:31