I am processing data from a text file with go and would like to ouput a json record like this:
[{
"ship": "RMS Titanic",
"crew": [{
"name": "Captain Smith"
}, {
"name": "First Officer Murdoch"
}],
"passengers": [{
"name": "Jack Dawson"
}, {
"name": "Rose Dewitt Bukater"
}]
},
{
"ship": "ship2",
"crew": [{
"name": "crew 1"
}, {
"name": "crew 2"
}],
"passengers": [{
"name": "passenger 1"
}, {
"name": "passenger 2"
}]
}
]
Here is a snippet from my code:
package main
import (
"fmt"
"encoding/json"
)
func main() {
var crew []map[string]string
var passengers []map[string]string
s1 := map[string]string{ "name": "RMS Titanic"}
j1, _ := json.Marshal(s1)
fmt.Printf("j1: %s
", string(j1))
s2 := map[string]string{ "name": "Captain Smith" }
crew = append(crew, s2)
s2 = map[string]string{ "name": "First Officer Murdoch" }
crew = append(crew, s2)
j2, _ := json.Marshal(crew)
fmt.Printf("j2: %s
", string(j2))
s3 := map[string]string{ "name": "Jack Dawson"}
passengers = append(passengers, s3)
s3 = map[string]string{ "name": "Rose Dewitt Bukater" }
passengers = append(passengers, s3)
j3, _ := json.Marshal(passengers)
fmt.Printf("j3: %s
", string(j3))
s4 := map[string]string{"crew": string(j2), "passengers": string(j3)}
j4, _ := json.Marshal(s4)
fmt.Printf("j4: %s
", string(j4))
}
Output:
j1: {"name":"RMS Titanic"}
j2: [{"name":"Captain Smith"},{"name":"First Officer Murdoch"}]
j3: [{"name":"Jack Dawson"},{"name":"Rose Dewitt Bukater"}]
j4: {"crew":"[{\"name\":\"Captain Smith\"},{\"name\":\"First Officer Murdoch\"}]","passengers":"[{\"name\":\"Jack Dawson\"},{\"name\":\"Rose Dewitt Bukater\"}]"}
I am processing the ship data in j1, the crew data in j2 and the passengers data in j3.
I have managed to merge j2 and j3 together into j4, but the quotation mark s are escapaded, how un-escape the quotation marks ?
How to insert j1 data in there so the output match the json output I wish for ?