字典对象部分中的多种数据类型<string, object>

问题描述 投票:0回答:1

我需要通过 CMS API 将此对象发送到控制器中:

{
    "configData":[{"filename":"tttttttt"},{"year":"2024"},{"month":"03"}],
    "unitData":[{"a":0,"b":1,"c":"asd"},{"a":0,"b":1,"c":"dsa"}]
}

然后控制器:

public string createAuditRels([FromBody] Dictionary<string,object> apiData)
{
    var apiConfigData = apiData["configData"] as Dictionary<string,string>;
    var filename = apiConfigData["filename"];
    ...
}

但我收到错误:

未将对象引用设置为对象的实例。

这种数据结构可能吗(对象类型中的多种数据类型)?

c# asp.net-core-webapi
1个回答
1
投票

你的

configData
是一个对象数组,但不是一个对象。因此,当您尝试投射到
null
时,您会得到
Dictionary<string, string>

将其投射为

List<Dictionary<string, string>>
类型。

var apiConfigData = apiData["configData"] as List<Dictionary<string, string>>;
var filename = apiConfigData[0]["filename"];

或者,您可以为请求正文创建一个模型类。

public class AuditRelModel
{
    public List<ConfigDataModel> ConfigData { get; set; }
    public List<UnitDataModel> UnitData { get; set; }
}

public class ConfigDataModel
{
    public string Filename { get; set; }
    public string Year { get; set; }
    public string Month { get; set; }
}

public class UnitDataModel
{
    public int A { get; set; }
    public int B { get; set; }
    public string C { get; set; }
}
public string createAuditRels([FromBody] AuditRelModel apiData)
{
    var filename = apiData.ConfigData[0].Filename;
}
© www.soinside.com 2019 - 2024. All rights reserved.