Как сделать динамический JSON в Голанге - PullRequest
0 голосов
/ 04 марта 2019

Предположим, что JSON изначально выглядит следующим образом:

jsonData := {
  "type": "text",
  "contents": []
}

Я хочу использовать цикл для добавления JSON ниже в поле contents jsonData во время выполнения:

{
      "type": "bubble",
      "hero": {
        "size": "full"
      },
      "body": {
        "spacing": "sm",
        "contents": [
          {
            "size": "xl"
          },
          {
            "type": "box",
            "contents": [
              {
                "flex": 0
              },
              {
                "flex": 0
              }
            ]
          }
        ]
      },
      "footer": {
        "spacing": "sm",
        "contents": [
          {
            "type": "button",
            "action": {
              "type": "uri"
            }
          },
          {
            "type": "button",
            "action": {
              "type": "uri"
            }
          }
        ]
      }
    },

Наконец, вывод выглядит так:

jsonData := {
      "type": "text",
      "contents": [{......},{.......}]
    }

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Golang - статически типизированный язык, в отличие от Javascript (что означает JS в JSON).Это означает, что каждая переменная должна иметь определенный тип во время компиляции, который не совсем соответствует принципу работы JSON.

Однако Golang предоставил встроенный пакет json, который упрощает процесс.

Вы должны знать 3 вещи, чтобы начать работать с JSON в Go, и вы можете продвигаться дальше ...

  1. Срезы Golang переводятся в массивы JSON ([]interface{})
  2. Карты Голанга переводятся в объекты JSON (map[string]interface{})
  3. json пакет делает все это (json.Marshal и json.Unmarshal)

Я нахожу, еслипрочитав эту статью, вы сможете получить представление о том, как все работает:

https://www.sohamkamani.com/blog/2017/10/18/parsing-json-in-golang/
https://blog.golang.org/json-and-go

0 голосов
/ 04 марта 2019
package main

import (
    "encoding/json"
    "fmt"
)

//Member -
type Member struct {
    Name   string
    Age    int
    Active bool
}

func main() {
    // you data
    mem := Member{"Alex", 10, true}

    // JSON encoding
    jsonBytes, err := json.Marshal(mem)
    if err != nil {
        panic(err)
    }

    // JSON to string for console
    jsonString := string(jsonBytes)

    fmt.Println(jsonString)
}

и документы "JSON and Go" https://blog.golang.org/json-and-go.

...