में एक मानचित्र में आंशिक JSON unmarshal मेरा वेबस्केट सर्वर प्राप्त होगा और अनमर्शल JSON डेटा प्राप्त करेगा। यह डेटा हमेशा किसी ऑब्जेक्ट में कुंजी/वैल्यू जोड़े के साथ लपेटा जाएगा। कुंजी-स्ट्रिंग मान पहचानकर्ता के रूप में कार्य करेगी, गो सर्वर को बताएगी कि यह किस तरह का मूल्य है। किस प्रकार का मूल्य जानने के बाद, मैं JSON unmarshal को सही प्रकार की संरचना में मान पर जा सकता हूं।गो
प्रत्येक जेसन-ऑब्जेक्ट में एकाधिक कुंजी/मान जोड़े हो सकते हैं।
उदाहरण 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)
}
किसी भी प्रकार के सुझाव/सहायता के लिए धन्यवाद!
बिल्कुल सही! मुझे याद आया कि आप 'RawMessage' का उपयोग कैसे कर सकते हैं। वास्तव में मुझे क्या चाहिए। 'कहना' के बारे में, मैं वास्तव में इसे अभी भी 'json.RawMessage' के रूप में चाहता हूं, क्योंकि स्ट्रिंग अभी भी डीकोड नहीं किया गया है (' ''' 'और' \ n' अक्षर से बच निकला है), इसलिए मैं इसे भी अनमशल कर दूंगा। – ANisus
I आपने जो किया उससे मेल खाने के लिए मेरा जवाब तय किया। धन्यवाद –
प्रकार नक्शा होना चाहिए [स्ट्रिंग] * json.RawMessage इसके बजाय Unmarshal/मार्शल विधियों को जेसन पर लागू नहीं किया गया है। RawMessage। – albert