From our special agent Json Bourne: notes from the field.
Make sure you are reading a raw string: i.e. (Get-Content JsonFile.JSON -raw) | ConvertFrom-Json
PowerShell seems to use an outdated Newtonsoft.Json.DLL file which doesn’t fully support comments
Make sure there are no comments in the .JSON file – if there are any you may need to manually edit them out to get ConvertFrom-Json to behave
The two versions being used on Azure VM’s seem to be 5.0.8.16617 (October/2013) and 6.0.3.17227 (February/2014).
Support for comments in JSON files in Newtonsoft.Json.DLL was first added in version 5.03 from 2014/11 (support for single line comments) and expanded on in later versions (6.07+)
The latest version of Newtonsoft.Json.DLL is 10.0.2 (as of April/2017)
If you put a comment into a Json file and try to run ConvertFrom-JSON in PowerShell on it you will get the following error message:
ConvertFrom-Json : Invalid object passed in, ‘:’ or ‘}’ expected. (1): {
At line:1 char:28
+ Get-Content .\config.JSON |ConvertFrom-Json -Verbose
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ConvertFrom-Json], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand
An Introduction to JavaScript Object Notation (JSON) in JavaScript and .NET (February 2007)
http://www.newtonsoft.com/json
https://github.com/JamesNK/Newtonsoft.Json