Моя первоначальная проблема заключается в том, что я хочу разобрать URL.Values на общий тип (map [interface {}] interface {}) изменить/добавить некоторые значения, а затем преобразовать их в строку JSON и поместить ее в столбец JSON PostgreSQL.golang не может отразить карту [interface {}] interface {}
Я пробовал этот код, чтобы разобрать его, но content
кажется пустым, тогда как err
является ложным. request.URL.Query()
печатает красивый объект карты.
v := reflect.ValueOf(request.URL.Query())
i := v.Interface()
content, err := i.(map[interface{}]interface{})
// Do some operations
jsonString, _ := json.Marshal(content)
// Add to DB
Почему это null? Также я думаю слишком общий?
Каков правильный способ работы с JSON, которые действительно динамичны? – Thellimist
@ Thellimist 'map [string] interface {}', вероятно, самый популярный способ. Лично я всегда избегал динамических форм unmarshalling. Я довольно уверен в том, что я не говорю «действительно динамично». Всегда есть схема, она может быть гибкой. Отражение никогда не нужно в вашем коде, только в фактическом unmarshaller (в этом случае encoding/json, но то же самое относится к другим библиотекам Go и других языков). Кроме того, если json является вариантом, я могу попробовать 'TypeA', затем' B', затем 'C', чтобы исчерпать возможные схемы, в худшем случае я бы это сделал. Избегайте моих ошибок с самого начала. – evanmcdonnal