Как создать API, как эти данные JSON - PullRequest
0 голосов
/ 08 ноября 2019

Вот API, который я хотел бы создать,

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

        },
    ]
}

Я хочу создать API путем возврата к ApiResult модели, Вот мой контроллер,

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

            return new ApiResult();
        }

My Api Result Model

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}

Как получить результат, которыймне нужно, как я упоминаю в первом абзаце?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

В вашем примере, когда вы возвращаете новый ApiResult из контроллера, вы не инициализируете свойства Result или Device в первую очередь. Вам нужно будет установить оба этих свойства на соответствующее значение перед возвратом объекта.

Поскольку вы используете массив в ApiResult объекте, вам, вероятно, следует требовать, чтобы значения передавались через конструктор, чтобы избежатьизменение размера или замена массива.

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

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

Другой вариант, который позволит получить те же данные JSON из API, заключается в использовании списка для объекта ApiResult.

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

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

Мое личное предпочтение было бы для второго варианта.

0 голосов
/ 08 ноября 2019

Ваш 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...