Friday, April 19, 2024
HomeGolangFind out how to know which line of json is failing to...

Find out how to know which line of json is failing to unmarshal? – Getting Assist


I’m engaged on an app that makes use of go to parse a json file for settings. I get the error proven beneath, 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 can examine your Go code to see the place you will have a subject of kind map[string]*json.RawMessage after which examine 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 method to activate extra detailed logs like in Rust

I’m not conscious of any method to try this in Go.

Might you paste your JSON into a web-based JSON parser and see what the offending line is that method? Additionally you might organize a fast take a look at utilizing the playground and attempt to debug it that method. For instance, modify this playground hyperlink to have your precise JSON:

func important() {
	// Substitute this together with your JSON
	byt := []byte(`{ "value1": "take a look at", "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 no less than extra descriptive than what your executable is supplying you with:

panic: invalid character '}' on the lookout for starting of worth

goroutine 1 [running]:
important.important()
	/tmp/sandbox266866198/prog.go:13 +0xe7

Program exited.

You can additionally strive the process outlined right here together with that go playground hyperlink to get extra data:

Although as soon as once more, a web-based JSON parser ought to work tremendous to provide you an in depth error message.

That helps if the JSON is invalid, however if you happen to put a JSON string worth the place an object is predicted (e.g. {"key": "string"} vs {"key": {"subkey": "string"}}), I don’t suppose this can assist until you will 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 might deal with each the examples you talked about simply tremendous). 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.

json.Unmarshall will return a *json.SyntaxError, which has an Offset subject, which comprises the variety of bytes efficiently learn earlier than the syntax error.

To establish the road in your JSON file that’s inflicting the error, you should utilize a JSON validator or formatter device. These instruments will help you establish syntax errors in your JSON file by highlighting the problematic line or exhibiting you an error message that describes the problem.

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments