JSON-Viewer icon indicating copy to clipboard operation
JSON-Viewer copied to clipboard

Format JSON changes numeric values

Open ertasso opened this issue 7 years ago • 7 comments

I noticed that some numeric values are changed after formatting the JSON.

To reproduce: 1.Input the following text and select it {"number":-1722.1864265316147} 2.Format text using "Plugins-JSON Viewer-Format JSON" 3.The result is { "number": -1722.1864265316149 }

ertasso avatar Oct 12 '18 06:10 ertasso

Thanks for reporting. Check release 1.32 in releases section.

kapilratnani avatar Oct 14 '18 09:10 kapilratnani

Hi, the issue does not appear to be totally fixed to me. With v.1.32, input {"number":-1722.1864265316147} is correctly formatted to { "number": -1722.1864265316147 } However, adding a 9 at the end: {"number":-1722.18642653161479} gives the incorrect rounding { "number": -1722.1864265316149 }

GabrieleDiCorato avatar Oct 15 '18 08:10 GabrieleDiCorato

This is related to a precision issue while converting string to double in the JSON parsing library. Other way is to parse the number to string. But, then it starts to show numbers inside quotes after formatting. I am trying to find out what could be done here. Let me know if anyone has a solution.

kapilratnani avatar Nov 18 '18 11:11 kapilratnani

Another example is

{ "Id": 100000000302052988.0 }

After "JSON Format" the value is 100000000302052990.

AlexanderNobi avatar Jan 29 '20 07:01 AlexanderNobi

yet another precision error case: lat long coordinates in plain text: [12.148681171238422,42.835353759876654] After "JSON Format": [12.148681171238423, 42.835353759876657]

radiothom avatar Jul 28 '20 07:07 radiothom

This is an annoying issue. Scientific values are also messed up, for example:

{"timeInfo":{"defaultTimeInterval":1.234e5}}

becomes

{
	"timeInfo": {
		"defaultTimeInterval": 123400.0
	}
}

Is it really necessary for a formatter to convert numeric string values to anything? My (maybe naive) idea would be that a formatter should just insert some newlines and whitespace at the correct locations and be done with it. But if it's really unavoidable, would it maybe be possible to write the original string value, rather than the parsed numeric value?

bveldkamp avatar Sep 24 '21 08:09 bveldkamp

Potentially related to #78 (issue with parsing)

user21760 avatar Nov 10 '21 19:11 user21760