当前位置: 首页 > 知识库问答 >
问题:

部分JSON解组到Go中的映射中

曹经业
2023-03-14
{
    "sendMsg":{"user":"ANisus","msg":"Trying to send a message"},
    "say":"Hello"
}

有没有使用“encoding/json”包来完成此操作的简单方法?

package main

import (
    "encoding/json"
    "fmt"
)

// the struct for the value of a "sendMsg"-command
type sendMsg struct {
    user string
    msg  string
}
// The type for the value of a "say"-command
type say string

func main(){
    data := []byte(`{"sendMsg":{"user":"ANisus","msg":"Trying to send a message"},"say":"Hello"}`)

    // This won't work because json.MapObject([]byte) doesn't exist
    objmap, err := json.MapObject(data)

    // This is what I wish the objmap to contain
    //var objmap = map[string][]byte {
    //  "sendMsg": []byte(`{"user":"ANisus","msg":"Trying to send a message"}`),
    //  "say": []byte(`"hello"`),
    //}
    fmt.Printf("%v", objmap)
}

谢谢任何建议/帮助!

共有1个答案

计和顺
2023-03-14

这可以通过解封到映射[string]json.rawmessage中来实现。

var objmap map[string]json.RawMessage
err := json.Unmarshal(data, &objmap)

要进一步解析sendmsg,可以执行以下操作:

var s sendMsg
err = json.Unmarshal(objmap["sendMsg"], &s)

对于say,您可以执行相同的操作并解封为字符串:

var str string
err = json.Unmarshal(objmap["say"], &str)
type sendMsg struct {
    User string
    Msg  string
}
 类似资料:
  • 问题内容: 我的websocket服务器将接收和解组JSON数据。此数据将始终包含在具有键/值对的对象中。密钥字符串将用作值标识符,告诉Go服务器它是哪种值。通过知道值的类型,我可以继续进行JSON解组值到正确的结构类型。 每个json对象可能包含多个键/值对。 JSON示例: 有什么简单的方法可以使用软件包来做到这一点? 感谢您的任何建议/帮助! 问题答案: 可以通过将其编组为。 要进一步解析,

  • 问题内容: 我的websocket服务器将接收和解组JSON数据。此数据将始终包含在具有键/值对的对象中。密钥字符串将用作值标识符,告诉Go服务器它是哪种值。通过知道哪种类型的值,我可以进行JSON解组值到正确的struct类型。 每个json对象可能包含多个键/值对。 JSON示例: 有什么简单的方法可以使用软件包来做到这一点? 感谢您的任何建议/帮助! 问题答案: 可以通过将其编组为一个文件来

  • 流上的操作是否可以生成一个映射,其中值是数组而不是列表或其他集合类型? 例如:我有一个类。事物有所有者,所以有一个方法。在一个事物流中,我想按所有者ID对事物进行分组,以便具有相同所有者ID的事物最终在一个数组中。换句话说,我想要一个像下面这样的映射,其中键是所有者ID,值是属于该所有者的事物数组。 在我的例子中,因为我需要将映射值传递给一个需要数组的库方法,所以收集到一个< code >映射中是

  • 问题内容: 我正在尝试将地图输出为XML数据,但是收到以下错误: 编组映射适用于JSON,因此我不明白为什么它不适用于XML。使用Struct真的是唯一的方法吗? 问题答案: 我最终按照DaveC的建议使用xml.Marshaler解决了这个问题 资料来源:https : //gist.github.com/jackspirou/4477e37d1f1c043806e0 现在,只需调用即可将地图编

  • 问题内容: 我想解析一些json数据。数据如下所示: {“ id”:“ someId”,“ key_1”:“ value_1”,“ key_2”:“ value_2”,“ key_3”:“ value_3”,“点数”:[[1487100466412,“ 50.032178”,“ 8.526018”,300 ,0.0,26,0],[1487100471563,“ 50.030869”,“ 8.525

  • 问题内容: 我已经编写了一个JAX-RS(Jersey)REST服务,该服务接受ONIX XML格式的XML消息。通常,我已经使用xjc从给定架构生成了JAXB绑定所需的所有类。总体上有500多个类,我无法对其进行修改。 现在,当我有一个JAXB映射的对象时,我需要将其存储到数据库中。我使用mongoDb,因此消息格式应为JSON。我试图将Jackson与JAXB模块一起使用,以将JAXB对象转换