मैं इस JSON पार्स करने के लिए चाहते हैं (config/synch.conf में) पार्स करने में अक्षम:golang में एक जटिल json
{
"period" :"yy",
"exec_period" :
{
"start" : {
"month" : 1,
"week" : 2,
"day" : 3,
"hour" : 4,
"minute" : 5
},
"end" : {
"month" : 6,
"week" : 7,
"day" : 8,
"hour" : 9,
"minute" : 10
}
},
"backup" : [
{
"local_dir" : "directoryLo1",
"server_dir" : "directoryLo2",
"server_host" : "domaineName"
},
{
"local_dir" : "directoryLo1",
"server_dir" : "directorySe2",
"server_host" : "domaineName"
}
],
"incremental_save" : "1Y2M"
}
इस programm के साथ:
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
)
func main() {
content, err := ioutil.ReadFile("config/synch.conf")
if err == nil {
type date struct{
month float64
week float64
day float64
hour float64
minute float64
}
type period struct{
start date
end date
}
type backupType []struct{
local_dir string
server_dir string
server_host string
}
type jason struct{
period string
exec_period period
backup backupType
incremental_save string
}
var parsedMap jason
err := json.Unmarshal(content, &parsedMap)
if err!= nil {
fmt.Println(err)
}
fmt.Println(parsedMap)
} else {
panic(err)
}
}
कौन सा रूप में काम नहीं करता है उम्मीद है, के रूप में उत्पादन होता है:
{ {{0 0 0 0 0} {0 0 0 0 0}} [] }
यहाँ play.golang.org में एक ही उदाहरण है
01,232,
मुझे नहीं पता कि यह संभव है या नहीं, लेकिन मैं नक्शा [स्ट्रिंग] इंटरफ़ेस {} में संग्रहीत json.Unmarshal
फ़ंक्शन का मूल्य प्राप्त करना चाहता था (या कोई अन्य ऑब्जेक्ट जो इसे अनुमति देता है) जहां मैं पहुंच सकता था उदाहरण के लिए, मिनट के अंत (10) इस तरह के मूल्य: parsedMap["exec_period"]["end"]["minute"]
, लेकिन मैं golang.org में "सामान्य JSON withinterface {}" JSON and Go का हिस्सा uderstand नहीं है
वास्तव में, क्या यह इतना आसान था ?! धन्यवाद एनीसस! –
अब, मेरा सवाल है, exec_period के मिनट के अंत के मूल्य तक कैसे पहुंचे? 'parsedMap [" exec_period "] [" end "] [" minute "] 'काम नहीं करता है और अमान्य ऑपरेशन का जवाब देता है: पार्सडैप [" exec_period "] (प्रकार जेसन का सूचकांक)', पहले अक्षरों को पूंजीकृत या –
नहीं मान का उपयोग करें, 'parsedMap.Exec_period.End.Minute' का उपयोग करें। अंतरफलक प्रकार के दावे के मुकाबले ज्यादा क्लीनर! (जैसा कि मैंने उत्तर में जोड़ा है) – ANisus