Как найти первое значение для декодирования JSON в Swift - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь декодировать дерево JSON в Swift, и вот как выглядит JSON дерево:

{
    "_type" = News;
    queryContext =     {
        originalQuery = "";
    };
    readLink = "https://api.cognitive.microsoft.com/api/v7/news/search?q=";
    value =     (
                {
            ampUrl = "https://www.msn.com/en-us/news/us/its-no-different-from-new-york-urban-centers-nationwide-gird-for-catastrophic-virus-outbreak/amp/ar-BB11QzZ6?li=BBnb7Kz";
            category = Health;
            datePublished = "2020-03-28T18:36:05.0000000Z";
            description = "In Chicago, the Army Corps of Engineers was preparing to erect 2,500 patient quarters throughout three of the cavernous halls at McCormick Place, the largest convention center in North America. In Detroit, a major hospital system was readying a letter for patients and their families outlining how scarce ventilators would be allocated, saying ...";
            headline = 1;
            image =             {
                thumbnail =                 {
                    contentUrl = "https://www.bing.com/th?id=ON.0EDDB46C77D1689214EC5B7940C23A91&pid=News";
                    height = 367;
                    width = 700;
                };
            };
            name = "\U2018It\U2019s no different from New York\U2019: Urban centers nationwide gird for catastrophic virus outbreak";
            provider =             (
                                {
                    "_type" = Organization;
                    image =                     {
                        thumbnail =                         {
                            contentUrl = "https://www.bing.com/th?id=AR_04bc0c1c424cf64dec14a2982f0360ef&pid=news";
                        };
                    };
                    name = "The Washington Post on MSN.com";
                }
            );

Моя структура для декодирования данных выглядит следующим образом:

struct Articles: Decodable {
    let values: [String: String]
    let name: String
}

Мой терминал сообщает мне, что значение "name" не существует. Находятся ли мои данные в «значении» или что-то еще?

1 Ответ

1 голос
/ 29 марта 2020

Измените Struct немного так:

struct Articles: Decodable {
    let readLink: String
    let value: [Values]
}

struct Values: Decodable {
    let description: String
    let name: String
}

имя находится внутри значения массива.

Какое имя вы пытаетесь расшифровать? В массиве Provider есть еще один.

...