Sunday, March 12, 2023
HomeGolangLearn how to know which line of json is failing to unmarshal?...

Learn 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 under, however it’s not telling me what line within the json file is inflicting the difficulty. How do I see this?

panic: json: can't unmarshal string into Go worth of kind map[string]*json.RawMessage

You might verify your Go code to see the place you could have a area of kind map[string]*json.RawMessage after which verify your JSON file to see if it’s a string as a substitute.

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 do this in Go.

May you paste your JSON into an internet JSON parser and see what the offending line is that method? Additionally you would 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 fundamental() {
	// Change 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 {

The output from that’s at the least extra descriptive than what your executable is supplying you with:

panic: invalid character '}' searching for starting of worth

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

Program exited.

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

Although as soon as once more, an internet JSON parser ought to work superb to provide you an in depth error message.

That helps if the JSON is invalid, however for those who put a JSON string worth the place an object is predicted (e.g. {"key": "string"} vs {"key": {"subkey": "string"}}), I don’t suppose this may assist except you could 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.


Most Popular

Recent Comments