首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法创建嵌套结构

无法创建嵌套结构
EN

Stack Overflow用户
提问于 2019-11-29 04:23:34
回答 2查看 54关注 0票数 0

我必须在go中格式化一个json,我有一些问题。我在java中使用的字符串文字如下:

代码语言:javascript
运行
复制
   String jsonString= "{\"stream\":\"temperatura2\",\r\n" + 
        "\"sensor\":\"ec6c613a-66b4-4584-fb37-5f7cac130f7d\",\r\n" + 
        "\"values\":[{\"time\":\"2019-03-10T11:30:00Z\",\"components\":{\"alfanum\":\"99.0\"}}]}\r\n";

所以我创建了这个结构:

代码语言:javascript
运行
复制
type YuccaDataStream struct {
    Stream string `json:"stream"`
    Sensor string `json:"sensor"`
    Values []struct {
       Time       time.Time `json:"time"`
         Components struct {
         Alfanum string `json:"alfanum"`
      } `json:"components"`
   } `json:"values"`
}

这个结构正确吗?我不知道如何创建该结构的实例并用当前时间填充它。

EN

回答 2

Stack Overflow用户

发布于 2019-11-29 04:41:01

别干那事。

代码语言:javascript
运行
复制
package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println("Hello, playground")

    y := YuccaDataStream{
        Values: []struct {
            Time       time.Time
            Components struct {
                Alfanum string
            }
        }{

            //
            struct {
                Time       time.Time
                Components struct {
                    Alfanum string
                }
            }{Time: time.Now(), Components: struct{ Alphanum string }{Alphanum: "aaa"}},
            //
            struct {
                Time       time.Time
                Components struct {
                    Alfanum string
                }
            }{Time: time.Now(), Components: struct{ Alphanum string }{Alphanum: "bbb"}},
            //

        },
    }
}

type YuccaDataStream struct {
    Stream string `json:"stream"`
    Sensor string `json:"sensor"`
    Values []struct {
        Time       time.Time `json:"time"`
        Components struct {
            Alfanum string `json:"alfanum"`
        } `json:"components"`
    } `json:"values"`
}
票数 1
EN

Stack Overflow用户

发布于 2019-11-29 05:14:33

这样如何:

代码语言:javascript
运行
复制
package main

import (
    "fmt"
    "time"
    "encoding/json"
)

type YuccaDataStream struct {
    Stream string `json:"stream"`
    Sensor string `json:"sensor"`
    Values []Value `json:"values"`
}

type Value struct {
    Time time.Time `json:"time"`
    Components `json:"components"`
}

type Components struct {
    Alfanum string `json:"alfanum"`
}

func main() {
    data := []byte(`{"stream": "temperatura2","sensor": "ec6c613a-66b4-4584-fb37-5f7cac130f7d","values": [{"time": "2019-03-10T11:30:00Z","components": {"alfanum": "99.0"}}]}`)

    var unmarshaled YuccaDataStream
    err := json.Unmarshal(data, &unmarshaled)
    if err != nil {
        panic(err)
    }
    fmt.Printf("%v",unmarshaled)
}

try in go playground

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59095736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档