Bullgill Coder Ответов: 1

Как я могу вернуть только 1 массив для результата JSON.


Я довольно новичок в API, и я пытаюсь запустить запрос, который всегда будет возвращать только 1 результат. У меня есть некоторый код, который работает, но он использует List<> Поэтому, когда JSON возвращается, я получаю квадратные скобки, например.

[
    {
        "customer": 43563254,
        "points": 14
    }
]


Поскольку это всего лишь один результат, я хочу вернуться без квадратных скобок. Каков наилучший способ достичь этого?

Что я уже пробовал:

Это код, который у меня есть до сих пор...

public IEnumerable<Points> Get(int id)
        {
            _con = new SqlConnection("data source=SQLSERVER1;initial catalog=TRdb01;user id=sa");
            DataTable dt = new DataTable();
            var query = "Select top 1 customer, points from KR.Api_Points where customer = " + id;
            _adapt = new SqlDataAdapter
            {
                SelectCommand = new SqlCommand(query, _con)
            };
            _adapt.Fill(dt);
            //List<Points> pointsbal = new List<Models.Points>(dt.Rows.Count);
            List<Points> pointsbal = new List<Models.Points>(dt.Rows.Count);
     
            if (dt.Rows.Count > 0)
            {
                foreach (DataRow points in dt.Rows)
                {
                    pointsbal.Add(new readPoints(points));
                }
            }

            return pointsbal;
        }


Может кто-нибудь указать мне правильное направление, пожалуйста.

Спасибо.

Richard MacCutchan

Текст JSON отформатирован отправителем, и вы не можете его контролировать.

1 Ответов

Рейтинг:
5

Chris Copeland

Если ваш Get(int id) метод-это тот, который производит ответ JSON, вы, вероятно, можете изменить тип возвращаемого значения с IEnumerable<Points> к Points а затем просто верните первый результат в поле dt.Rows коллекция?

Причина в том, что он форматируется как массив с квадратными скобками [] это происходит потому, что перечисляемый объект, сериализуемый в JSON, является коллекцией и будет использовать квадратные скобки как таковые. Стандарт {} указывает на объект, поэтому возврат объекта в ответе будет сериализовать его как таковой.


Bullgill Coder

Спасибо, что сработало!

начало моего кода теперь читается...

public Points Get(int id)

и я изменил последнюю строку на ...

верните пойнтсбал.Метода firstordefault();

Может быть, не самое чистое решение, но оно работает для меня!

BillWoodruff

+5