Как определить часть структуры Go как строку JSON? - PullRequest
0 голосов
/ 07 февраля 2020

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

 {
    "sites": {
        "count": 123,
        "site": [
            {
                "id": 111,
                "name": "abc"
            },
            {
                "id": 222,
                "name": "def"
            },
            {
                "id": 333,
                "name": "ghi"
            }
        ]
    }
}

Желаемый результат - это массив, который выглядит следующим образом:

{"id": 111, "name": "abc"}
{"id": 222, "name": "def"}
{"id": 333, "name": "ghi"}

То, что я не могу понять, это как определить структура, которая останавливает демаршаллинг в определенный момент определения структуры. Есть ли способ просто вывести содержимое структуры [] в строку для каждого элемента массива структуры вместо определения содержимого подструктуры?

1 Ответ

3 голосов
/ 07 февраля 2020

Вы можете использовать json.RawMessage:

type Sites struct {
   Count int `json:"count"`
   SiteArr []json.RawMessage `json:"site"`
}

Когда вы распаковываете данные в вышеуказанную структуру, каждый элемент SiteArr будет содержать необработанное сообщение JSON для каждого элемента, и вы можете получить значение строки из этого, используя string(sites.SiteArr[i])

...