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

C# MVC如何定义实体类以接收不可修改JSON中的RegionMap字段值

问题原因

你定义的RegionMap字段类型为Array,但传入JSON中的RegionMap是键值对结构的对象,不是数组结构,所以序列化时无法完成类型映射,导致无法获取有效值。

解决方案

将RegionMap的类型修改为Dictionary<string, int>即可,C# 常用的序列化组件(包括DataContract序列化、Newtonsoft.Json、System.Text.Json)都支持将JSON对象自动映射为Dictionary结构,无论键值对数量多少都能正常适配。

修改后的实体类代码如下:

[DataContract]
public class Presence
{
    [DataMember]
    public bool presenceDetected { get; set; }
    [DataMember]
    public long timestamp { get; set; }
    [DataMember]
    public Dictionary<string, int> RegionMap { get; set; }
    [DataMember]
    public string deviceId { get; set; }
}

后续遍历的写法示例:

public void MonitorPresence([FromBody] Presence APresenceData)
{
    foreach (var item in APresenceData.RegionMap)
    {
        var regionKey = item.Key; // 对应JSON里的键,比如"0"、"1"
        var regionValue = item.Value; // 对应键的值,比如1、0
        // 你的业务逻辑
    }
}

如果业务逻辑里Region的键本身是数字含义,也可以直接声明为Dictionary<int, int>,序列化组件会自动完成字符串键到int键的转换,不需要额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:12:00