C # Web API Вложенный JSON из хранимой процедуры в MSSQL - PullRequest
0 голосов
/ 17 октября 2019

Обзор:

Я создаю API с помощью ASP.NET Web API 2. Я строю хранимые процедуры в SQL и связываю их в API для обслуживания данных.

Я знаю, что SQL может вернуть JSON, например, используя FOR JSON AUTO. Но я не думаю, что это лучшее место для настройки данных и вывода JSON. Итак, я предполагаю, что должен быть способ достижения вложенного JSON в API.

Это то, чего я хочу достичь:

    {
        "Apps": [
            {
                "ItemID": "1",
                "Path": "/AppReport",
                "Name": "AppReport",
                "Reports": [
                    {
                        "Reports_ItemID": "11",
                        "Reports_Path": "/AppReport/SubReport",
                        "Reports_Name": "SubReport"
                    },
                    {
                        "Reports_ItemID": "12",
                        "Reports_Path": "/AppReport/SubReport2",
                        "Reports_Name": "SubReport2"
                    }
                ]
            },
            {
                "ItemID": "2",
                "Path": "/AppReport2",
                "Name": "AppReport2",
                "Reports": [
                    {
                        "Reports_ItemID": "22",
                        "Reports_Path": "/AppReport/SubReport",
                        "Reports_Name": "SubReport"
                    }
                ]
            }
        ]
    }

На данный момент это выглядит как квартираArray из Objects

    {
        "Apps": [
            {
                "ItemID": "1",
                "Path": "/AppReport",
                "Name": "AppReport",
                "Reports_ItemID": "11",
                "Reports_Path": "/AppReport/SubReport",
                "Reports_Name": "SubReport"
            },
            {
                "ItemID": "1",
                "Path": "/AppReport",
                "Name": "AppReport",
                "Reports_ItemID": "12",
                "Reports_Path": "/AppReport/SubReport2",
                "Reports_Name": "SubReport2"
            },

            ...
        ]
    }

У меня есть класс хранимой процедуры в API, который выглядит следующим образом:

    namespace API.Stored_Procedures
    {
        public partial class SP_GetApps
        {
            public System.Guid ItemID { get; set; }
            public string Path { get; set; }
            public string Name { get; set; }
            public System.Guid Report_ItemID { get; set; }
            public string Report_Path { get; set; }
            public string Report_Name { get; set; }
        }

    }

Мой контроллер выглядит так:

    [HttpGet]
    [Route("{uid}", Name ="getReportApps")]
    [ResponseType(typeof(SP_GetApps_Result))]
    public IHttpActionResult SP_GetApps(string uid)
    {
        var res = db.Database.SqlQuery<SP_GetApps_Result>
            ("SP_GetApps {0}", uid);

        return Ok(res);
    }

1 Ответ

0 голосов
/ 17 октября 2019

Для достижения желаемого класса JSON должен выглядеть как

public class App
{
    public string ItemID { get; set; }
    public string Path { get; set; }
    public string Name { get; set; }
    public List<Report> Reports { get; set; }
}

public class Report
{
    public string Reports_ItemID { get; set; }
    public string Reports_Path { get; set; }
    public string Reports_Name { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...