为了账号安全,请及时绑定邮箱和手机立即绑定

构建对象的 Json 对象并将其写入文件

构建对象的 Json 对象并将其写入文件

Go
智慧大石 2022-06-06 14:50:46
我正在尝试获取从 Go API 接收到的字符串数组,并将它们以奇怪的 json 列表格式写入文件。没有括号 [],所以我必须为数组中的每个字符串值创建一个“维度”。我正在尝试使用类型/结构来做到这一点,但我一直卡住(Go 的新功能)。我应该尝试只使用地图,还是有办法做到这一点?这是我现在使用的代码:package mainimport (    "fmt"    "io/ioutil")type Dimension struct {    SQL, Type string}type Measure struct {    Type         string    DrillMembers []string}func check(e error) {    if e != nil {        panic(e)    }}func main() {    a := []string{"country", "year", "gdpPercap", "lifeExp", "pop", "continent"}    cubeSchema := "measures: {\n  count: {\n    type: `count`,\n    drillMembers: "    for i, s := range a {        cubeSchema += s        fmt.Println(cubeSchema)        fmt.Println(i)    }    fileText := []byte(cubeSchema)    fmt.Println(cubeSchema)    err := ioutil.WriteFile("test.js", fileText, 0644)    check(err)}这就是我需要输出的样子:measures: {    count: {      type: `count`,      drillMembers: [country]    }  },  dimensions: {    country: {      sql: `country`,      type: `string`    },    year: {      sql: `year`,      type: `string`    },    gdppercap: {      sql: `gdppercap`,      type: `string`    },    lifeexp: {      sql: `lifeexp`,      type: `string`    },    pop: {      sql: `pop`,      type: `string`    },    continent: {      sql: `continent`,      type: `string`    }  }现在我一直被以下输出卡住:measures: {  count: {    type: `count`,    drillMembers: countryyeargdpPercaplifeExppopcontinent
查看完整描述

2 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

package main


import (

    "fmt"

    "io/ioutil"

)


func check(e error) {

    if e != nil {

        panic(e)

    }

}


func main() {

    schema := `measures: {

    count: {

      type: 'count',

      drillMembers: [country]

    }

  },


  dimensions: {

  `

    a := []string{"country", "year", "gdpPercap", "lifeExp", "pop", "continent"}

    var cubeSchema string

    for _, s := range a {

        cubeSchema += s + ": {\n\tsql: " + s + ",\n\ttype: `string`\n},\n"

    }


    fileText := []byte(schema + cubeSchema + "}\n}")

    fmt.Println(cubeSchema)

    err := ioutil.WriteFile("test.js", fileText, 0644)

    check(err)

}

检查此代码。


查看完整回答
反对 回复 2022-06-06
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

我试着做第二部分:


package main


import (

    "encoding/json"

    "fmt"

)


func main() {

    a := []string{"country", "year", "gdpPercap", "lifeExp", "pop", "continent"}

    var items map[string]sqlType

    items = make(map[string]sqlType)


    for _, v := range a {

        items[v] = sqlType{SQL: v, Type: "string"}

    }


    dimensions := dimensions{Dimensions: items}


    bytes, err := json.Marshal(dimensions)


    if err != nil {

        panic(err)

    }

    c := string(bytes)


    fmt.Println(c)


}


type sqlType struct {

    SQL  string `json:"sql"`

    Type string `json:"type"`

}


type dimensions struct {

    Dimensions map[string]sqlType `json:"dimensions"`

}


查看完整回答
反对 回复 2022-06-06
  • 2 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信