सरल सवाल है कि मुझे एक कठिन समय है कि JSON डिकोडिंग के लिए संरचना को कैसे व्यवस्थित किया जाए।
मैं संरचना के किसी भी क्षेत्र को संरचना के किसी अन्य क्षेत्र में कैसे कॉपी कर सकता हूं?
मेरे पास JSON है
{
"Trains": [{
"Car": "6",
"Destination": "SilvrSpg",
"DestinationCode": "B08",
"DestinationName": "Silver Spring",
"Group": "1",
"Line": "RD",
"LocationCode": "A13",
"LocationName": "Twinbrook",
"Min": "1"
}]
}
और मेरे पास structs हैं
type Trains struct {
Min string `json:"Min"`
DestName string `json:"DestinationName"`
DestCode string `json:"DestinationCode"`
LocName string `json:"LocationName"`
LocCode string `json:"LocationCode"`
Line string `json:"Line"`
}
type AllData struct {
Data []Trains `json:"Trains"`
}
मैं ट्रेनों का मूल्य कैसे प्राप्त कर सकता हूं। स्थानकोड जैसे संरचना में
type AllData struct {
Id Trains[0].LocCode value
Data []Trains `json:"Trains"`
}
तो मुझे मूल रूप से बस इस तरह JSON होना चाहिए
{
"Id":"A13",
"Data": [{
"Car": "6",
"Destination": "SilvrSpg",
"DestinationCode": "B08",
"DestinationName": "Silver Spring",
"Group": "1",
"Line": "RD",
"LocationCode": "A13",
"LocationName": "Twinbrook",
"Min": "1"
}]
}
जहां Id
ट्रेन संरचना का आंतरिक मूल्य है।
मैं इसे प्रतिबिंबित करने के लिए एक संरचना कैसे बना सकता हूं?
उत्तर:
जवाब के लिए 0 № 1JSON डिकोडर में यह क्षमता नहीं है। आपको अपने आवेदन में कोड की रेखा लिखनी होगी।
package main
import (
"encoding/json"
"fmt"
"log"
)
var s = `
{
"Trains": [{
"Car": "6",
"Destination": "SilvrSpg",
"DestinationCode": "B08",
"DestinationName": "Silver Spring",
"Group": "1",
"Line": "RD",
"LocationCode": "A13",
"LocationName": "Twinbrook",
"Min": "1"
}]
}`
type Train struct {
Min string `json:"Min"`
DestName string `json:"DestinationName"`
DestCode string `json:"DestinationCode"`
LocName string `json:"LocationName"`
LocCode string `json:"LocationCode"`
Line string `json:"Line"`
}
type Data struct {
// The name "-" tells the JSON decoder to ignore this field.
ID string `json:"-"`
Trains []Train
}
func main() {
var d Data
if err := json.Unmarshal([]byte(s), &d); err != nil {
log.Fatal(err)
}
if len(d.Trains) < 1 {
log.Fatal("No trains")
}
// Copy value from inner to outer.
d.ID = d.Trains[0].LocCode
fmt.Printf("%+vn", &d)
}