Id нравится работать с JSON в Голанге, в частности, с протоколом JSON с эластичным поиском.Каков наилучший способ работы с вложенными структурами JSON в Голанге?
JSON глубоко вложенный (это простой запрос):
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"and": [
{
"range" : {
"b" : {
"from" : 4,
"to" : "8"
}
},
},
{
"term": {
"a": "john"
}
}
]
}
}
}
}
Эта структура легко сопоставляется с нативной структурой данных в Ruby.
Но с Golang, кажется, вам нужно определить точную структуру с помощью структур (возможно, их программно создать из источника JSON).
Тем не менее, такие вещи, как массивы разных «типов» объектов в JS, требуют работы вокруг и пользовательского кода. Например, ключ «и» в примере JSON. (http://mattyjwilliams.blogspot.co.uk/2013/01/using-go-to-unmarshal-json-lists-with.html).
Есть ли лучший способ работать с JSON в Голанге?
я рекомендую делать фактические структуры. Как и на любом другом языке, вы перебираете массивы разных типов с полиморфизмом. Необходимые структуры в Go аналогичны структурам, которые я буду использовать на любом другом языке. Другие модели могут работать нормально в некоторых ситуациях, но в целом это всего лишь короткое сокращение, на самом деле они не лучше на что-либо, кроме сохранения разработчика на несколько минут вперед. – evanmcdonnal
Не отвечая, потому что у кого-то есть лучшее решение, но вы всегда можете работать с вложенным интерфейсом 'map [string] {}' и '[] interface {}' s. – twotwotwo
Кроме того, если вы хотите использовать что-то вроде структуры карт в Ruby (опять же, я думаю, что это просто плохая практика и будет использовать ее только в инструментах, которые я пишу для собственного использования), тогда вы ищете 'map [string ] interface {} ', но все глупые утверждения cast/type, необходимые для использования ваших данных, быстро превышают строки, сохраненные, не определяя структуры. – evanmcdonnal