массив json_agg () для объекта - PullRequest
0 голосов
/ 21 октября 2019

json_agg () возвращает такой результат

 [{..},{..}...]

Я пытаюсь найти, есть ли способ изменить этот массив на отдельный объект, мой результат - один объект, так как он возвращает массив объектов. У меня возникла проблема при десериализации.

JsonConvert.DeserializeObject<SwmsGetDto>(swmsJson.ToString());

Я пытался найти, есть ли в Postgres SQL другая агрегатная функция для этого, но нене найти.

Мой запрос выглядит так:

SELECT json_agg(d1) FROM (
  select * from positions;
)d1) as positions;

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Я нашел решение этой проблемы, row_to_json() - решение этой проблемы.

Пример

select row_to_json(d1)
from (
  select * from positions where id = 12
) as d1
1 голос
/ 21 октября 2019

Поскольку он возвращает коллекцию прямо вверх, вам нужно десериализовать ее в этот

List<SwmsGetDto> array = JsonConvert.DeserializeObject<List<SwmsGetDto>>(json);

Если вы настаиваете на том, чтобы вместо него был класс, определите тот, который содержит такой список.

public class SingleObject
{
    public List<SwmsGetDto> data { get; set; }
}

Тогда

SingleObject single = new SingleObject() 
{ 
    data = JsonConvert.DeserializeObject<List<SwmsGetDto>>(json) 
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...