Частично JSON демаршалируется в карту в Go

Мой веб-сервер будет получать и демаршалировать данные JSON. Эти данные всегда будут упакованы в объект с парами ключ/значение. Строка ключа будет действовать как идентификатор значения, сообщая серверу Go, что это за значение. Зная, какой тип значения, я могу затем перейти к JSON, чтобы преобразовать значение в правильный тип структуры.

Каждый json-объект может содержать несколько пар ключ/значение.

Пример JSON:

{
    "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)
}

Спасибо за любые предложения/помощь!

87
задан ANisus 17 June 2012 в 08:25
поделиться