【问题标题】:How to properly transform json strings to objects如何正确地将 json 字符串转换为对象
【发布时间】:2019-08-05 05:27:40
【问题描述】:

我有一个用 Go 编写的 Beam 管道,我想转换这个输入:

{"name": "Bob", "age": 32}

到一个有效的“对象”。

go sdk在编码包中有这个功能:

// UnmarshalJSON sets the state of this instance from the passed in JSON.
func (w *EncodedType) UnmarshalJSON(buf []byte) error {
    var s string
    if err := json.Unmarshal(buf, &s); err != nil {
        return err
    }
    t, err := graphx.DecodeType(s)
    if err != nil {
        return err
    }
    w.T = t
    return nil
}

但我不明白如何将它用作我管道的一个步骤。

【问题讨论】:

  • 我觉得this 的例子应该对你有所帮助。你能告诉我们管道返回 JSON 记录的位置吗?从那里我们应该能够找到解决方案。

标签: go apache-beam


【解决方案1】:

你走在了正确的轨道上。 Go 没有正常意义上的“对象”,因为它与编程有关。你会使用这样的结构:

    type User struct {
        Name    string `json:"name"`
        Age     int    `json:"age"`
    }

你可以使用它来解组成这样的结构:

    var myUser User
    err := json.Unmarshal([]byte(`{"name": "Bob", "age": 32}`), &myUser)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(myUser.Name, myUser.Age)

这是一个游乐场示例:https://play.golang.org/p/_uHZ9Q_j-p1

更多信息:https://blog.golang.org/json-and-go

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 2012-12-16
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    相关资源
    最近更新 更多