如何像这样的JSON数据创建API

这是我要创建的API,

{
    "Result": "PASS","Device": [
        {
            "ID": "01","State": "abc",},{
            "ID": "02"
            "State": "efg",]
}

我想通过返回ApiResult模型来创建API,这是我的控制器

[HttpGet("device")]
        public async Task<actionResult<ApiResult>> Device()
        {

            return new ApiResult();
        }

我的Api结果模型

public class ApiResult
    {
        public string Result { get; set; }
        public ApiDevice[] Device { get; set; }
    }

另一个模型,

public class ApiDevice
    {
        public string ID { get; set; }
        public string State { get; set; }

    }

我得到的结果就是这样

{"result":null,"device":null}

如何获得我在第一段中提到的结果?

zsdzjwx 回答:如何像这样的JSON数据创建API

您的json无效,应该是:

{
    "Result": "PASS","Device": [
        {
            "ID": "01","State": "abc"
        },{
            "ID": "02","State": "efg" 
        }
    ]
}

您的课程应该类似于:

public class Device
{
    public string ID { get; set; }
    public string State { get; set; }
}

public class RootObject
{
    public string ApiResult { get; set; }
    public List<Device> Device { get; set; }
}

此站点非常适合将json转换为C#:http://json2csharp.com/

,

在您的示例中,当您从控制器返回新的ApiResult时,您并没有首先初始化属性ResultDevice。返回对象之前,您需要将这两个属性都设置为适当的值。

由于您正在ApiResult对象中使用数组,因此可能应该要求通过构造函数传递值,以避免调整数组大小或替换数组。

public class ApiResult
{
    public string Result { get; set; }
    public ApiDevice[] Device { get; set; }

    public ApiResult(string result,ApiDevice[] devices) {
        Result = result;
        Device = devices;
    }
}

另一个可以从API获取相同JSON数据的选项是在ApiResult对象上使用列表。

public class ApiResult
{
    public string Result { get; set; }
    public List<ApiDevice> Device { get; set; }

    public ApiResult() {
        Device = new List<ApiDevice>();
    }
}

我个人的偏爱将是第二种选择。

本文链接:https://www.f2er.com/3136545.html

大家都在问