Получение сериализованного словаря c # в формате JSON и его десериализация на моем угловом 6-сайте (typscript) - PullRequest
0 голосов
/ 10 мая 2019

Я получаю строку JSON из API и хочу десериализовать ее на своем веб-сайте Angular 6.

Я не знаю, как работают словари в TypeScript.Поэтому я стараюсь избегать их настолько, насколько могу, когда это нужно получить от API.

Когда я делаю:

console.log(JSON.parse(viewed_availab));

Я вижу этот результат:

[{
    "2019-05-10T00:00:00": {
        "TotalStopsCount": null,
        "TotalRoutesCount": null,
        "TotalStopsCountAfterBooking": null,
        "OccupancyRate": null,
        "OccupancyRateAfterBokking": null,
        "ZoneId": null,
        "DomainName": "MTH",
        "Date": "2019-05-10T00:00:00",
        "IsAvailable": false,
        "Status": {
            "Message": "Not enough time for items to reach final destination",
            "StatusID": 1
        },
        "IdDomains": null,
        "Items": []
    },
    "2019-05-10T00:00:00": {
        "TotalStopsCount": null,
        "TotalRoutesCount": null,
        "TotalStopsCountAfterBooking": null,
        "OccupancyRate": null,
        "OccupancyRateAfterBokking": null,
        "ZoneId": null,
        "DomainName": "MTH",
        "Date": "2019-05-10T00:00:00",
        "IsAvailable": false,
        "Status": {
            "Message": "Not enough time for items to reach final destination",
            "StatusID": 1
        },
        "IdDomains": null,
        "Items": []
}]

И вот запрос, который я выполняю, чтобы получить эту строку:

this.dataService.post('cleard.api.timeslot.viewed_availabilities', new ViewedAvailabilityParams(search.postalCode, search.userName, search.date, search.businessUnitId, search.originLocationId))
.then((viewed_availab: string) => {
...
    }).catch((error) => { this.searching = false; });

Я бы хотел, чтобы результат был в словаре машинописи:

Dictionary<Date, Availibility> // in a typescript way.

, где дата представляетключ (первая строка Json), а доступность представляет содержимое:

{"TotalStopsCount": null,
"TotalRoutesCount": null,
"TotalStopsCountAfterBooking": null,
"OccupancyRate": null,
... and so on }

(у меня уже есть модель для доступности).

1 Ответ

0 голосов
/ 10 мая 2019

Словарь в Typescript / Javascript - это просто объект.Вы можете перебрать его, используя Object.entries:

const dictionary = {
  'key1': value1,
  'key2': value2
};

Object.entries(dictionary).forEach(([key, value]) => {
  // ...
});

Соответствующие типы, которые могут быть подходящими: Record<TKey, TValue>, { [key: string]: T }

...