I’m engaged on an app that makes use of go to parse a json file for settings. I get the error proven under, nevertheless it’s not telling me what line within the json file is inflicting the problem. How do I see this?
panic: json: can't unmarshal string into Go worth of kind map[string]*json.RawMessage
You may verify your Go code to see the place you might have a area of kind map[string]*json.RawMessage
after which verify your JSON file to see if it’s a string as an alternative.
I don’t have entry to the code. I hoped there was a strategy to activate extra detailed logs like in Rust
I’m not conscious of any approach to try this in Go.
May you paste your JSON into a web-based JSON parser and see what the offending line is that approach? Additionally you might organize a fast check utilizing the playground and attempt to debug it that approach. For instance, modify this playground hyperlink to have your precise JSON:
func primary() {
// Substitute this along with your JSON
byt := []byte(`{ "value1": "check", "value2": }`)
var dat map[string]*json.RawMessage
if err := json.Unmarshal(byt, &dat); err != nil {
panic(err)
}
fmt.Println(dat)
}
The output from that’s at the least extra descriptive than what your executable is providing you with:
panic: invalid character '}' on the lookout for starting of worth
goroutine 1 [running]:
primary.primary()
/tmp/sandbox266866198/prog.go:13 +0xe7
Program exited.
You may additionally strive the process outlined right here together with that go playground hyperlink to get extra information:
Although as soon as once more, a web-based JSON parser ought to work superb to provide you an in depth error message.
That helps if the JSON is invalid, however should you put a JSON string worth the place an object is predicted (e.g. {"key": "string"}
vs {"key": {"subkey": "string"}}
), I don’t suppose it will assist except you might have a JSON schema definition.
1 Like
Ah good name – I incorrectly assumed it was invalid JSON as a result of map[string]*json.RawMessage
is fairly versatile (it may deal with each the examples you talked about simply superb). However you’re completely proper – it’s legitimate JSON to have solely an array as top-level textual content:
And in that case, map[string]
would break.