Мы должны изменить способ получения наших данных — в настоящее время они поступают с SQL-сервера, но теперь доступен «золотой источник», где данные разбиваются на соответствующие объекты, то есть страна, работник, учетная запись работника и Active Directory.
Это образец JSON для страны:
{
"@odata.context": "https://this.company.url/WebAPI/v2/$metadata#Country",
"value": [
{
"CountryId": 100002,
"CountryAlpha2Code": "AD",
"CountryAlpha3Code": "AND",
"CountryNumericCode": "020",
"CountryName": "Andorra",
"CountryStartDate": null,
"CountryEndDate": null,
"RetiredCountryCode": null,
"CountryShortName": "Andorra",
"IsDeleted": false,
"LastUpdateTime": "2017-08-05T09:58:53.44Z",
"LastUpdateBy": "USERID",
"ETLUpdatedDate": "2018-08-18T04:58:31Z"
},
{
"CountryId": 100003,
"CountryAlpha2Code": "AE",
"CountryAlpha3Code": "ARE",
"CountryNumericCode": "784",
"CountryName": "United Arab Emirates (the)",
"CountryStartDate": null,
"CountryEndDate": null,
"RetiredCountryCode": null,
"CountryShortName": "United Arab Emirates",
"IsDeleted": false,
"LastUpdateTime": "2017-08-05T09:58:53.44Z",
"LastUpdateBy": "USERID",
"ETLUpdatedDate": "2018-08-18T04:58:31Z"
},
{...
Если я затем скопирую JSON как классы, я получу
public class Rootobject
{
public string odatacontext { get; set; }
public Value[] value { get; set; }
}
public class Value
{
public int CountryId { get; set; }
public string CountryAlpha2Code { get; set; }
public string CountryAlpha3Code { get; set; }
public string CountryNumericCode { get; set; }
...
public string LastUpdateBy { get; set; }
public DateTime ETLUpdatedDate { get; set; }
}
Я нашел пример, но, имея пять разных объектов, имеющих одинаковые корневые объекты и классы значений, я изо всех сил пытаюсь реализовать это. Я не могу контролировать структуру метаданных JSON, поскольку я не единственный, кто их использует, поэтому я пытаюсь понять, как я могу читать каждый класс, сохраняя их различимость.
К вашему сведению. это запрос, который я хочу воспроизвести (хотя один из классов пока недоступен — FinancialGeographyAddress, но работы достаточно, чтобы занять меня, пока он доступен).
SELECT
UPPER(AD.[AccountName])
,TRIM('.' FROM AD.[LastName]) AS [LastName]
,TRIM('.' FROM AD.[GivenName]) AS [GivenName]
,TRIM('.' FROM AD.[Initials]) AS [Initials]
,LOWER(AD.[EmailAddress])
,C.[CountryAlpha2Code]
,AD.[DisplayName]
,AD.[Enabled]
,CASE
-- Swap display name to be 'lastname, firstname' when 'firstname lastname'
WHEN AD.[DisplayName] IS NULL OR AD.[GivenName] = LEFT(AD.[DisplayName], LEN(AD.[GivenName])) THEN
[LastName] + ', ' + [GivenName]
-- Remove the bracketed suffix and/or any trailing periods
WHEN CHARINDEX('(', AD.[DisplayName]) > 0 THEN
TRIM('.' FROM LEFT(AD.[DisplayName], CHARINDEX('(', AD.[DisplayName]) - 2))
ELSE
TRIM('.' FROM AD.[DisplayName])
END
FROM [wrk].[vwWorker] AS W
INNER JOIN [rpt].[vwFinancialGeographyAddress] AS FGA
ON W.[FinancialGeographyId] = FGA.[FinancialGeographyId] AND FGA.[IsDeleted] = 0
INNER JOIN [rpt].[vwCountry] AS C ON C.[CountryId] = FGA.[CountryId] AND C.[IsDeleted] = 0
INNER JOIN [wrk].[vwWorkerAccount] AS WA ON WA.[WorkerId] = W.[WorkerId] AND WA.[IsDeleted] = 0
INNER JOIN [rpt].[vwActiveDirectory] AS AD ON AD.[ActiveDirectoryId] = WA.[ActiveDirectoryID]
AND AD.[IsDeleted] = 0 AND AD.[Enabled] = 'True'
WHERE
-- Only interested in UK, Guernsey and Ireland
C.[CountryAlpha2Code] IN ('GB', 'GG', 'IE')
Подробнее здесь: https://stackoverflow.com/questions/787 ... ta-objects
Запрос нескольких сериализованных объектов данных ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Явная подпись метода для обеспечения работы сериализованных лямбда-выражений между версиями.
Anonymous » » в форуме JAVA - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-