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

如何为含未知数量子字段的非数组父属性编写JSON类

处理未知子字段数量的amounts字段JSON类编写方案

针对你遇到的amounts字段子项数量未知、且为字符串键+整数值的键值对结构,不同主流语言的实现方案如下:

Java 实现

Java中直接用Map<String, Integer>来映射amounts字段,能完美适配未知数量的键值对,主流JSON解析库(如Jackson)都支持这种映射:

import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Map;

public class YourJsonClass {
    @JsonProperty("amounts")
    private Map<String, Integer> amounts;

    // 生成Getter和Setter方法
    public Map<String, Integer> getAmounts() {
        return amounts;
    }

    public void setAmounts(Map<String, Integer> amounts) {
        this.amounts = amounts;
    }
}

解析时,amounts下的所有键值对会自动填充到Map中。

Python 实现

Python里无需复杂的类定义,用字典就能直接对应,也可以用类型提示工具做约束:

普通解析方案

import json

json_str = '''{
    "amounts": {
        "a": 100,
        "b": 72
    }
}'''
data = json.loads(json_str)
amounts_dict = data['amounts']  # 直接得到字符串键+整数值的字典

带类型约束方案(适合大型项目)

from typing import TypedDict
import json

class Amounts(TypedDict):
    __extra_items__: str, int  # 允许任意字符串键,值为int类型

class YourJsonType(TypedDict):
    amounts: Amounts

json_str = '''{
    "amounts": {
        "a": 100,
        "b": 72
    }
}'''
data: YourJsonType = json.loads(json_str)

C# 实现

C#使用Dictionary<string, int>来对应amounts字段,System.Text.Json或Newtonsoft.Json都支持:

using System.Text.Json.Serialization;
using System.Collections.Generic;

public class YourJsonClass
{
    [JsonPropertyName("amounts")]
    public Dictionary<string, int> Amounts { get; set; }
}

// 解析示例
string jsonStr = @"
{
    ""amounts"": {
        ""a"": 100,
        ""b"": 72
    }
}";
YourJsonClass obj = System.Text.Json.JsonSerializer.Deserialize<YourJsonClass>(jsonStr);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:57:47