Reputation: 1769
When trying to convert a JSON file via PowerShell:
$json = Get-Content "C:\folder1\test.txt"
$json | ConvertFrom-Json
write-output $json
I'm getting the following error:
invalid json primitive : [.
(system.argunment.exception)
Upvotes: 28
Views: 91483
Reputation: 192
I was also receiving this error, and upon investigating my json file noticed that some of the JSON was invalid. I was ending the last object in an array with a comma like so:
[{ ..},]
Removing the comma fixed the issue for myself.
So in short, invalid JSON caused this issue for me.
Upvotes: 5
Reputation: 752
You will get this error if your input data starts like this:
data: [
{
...
},
{
...
}
]
You need to remove data:
(and only have [
and ]
in this example):
[
{
...
},
{
...
}
]
Upvotes: 1
Reputation: 206
You should check your JSON input file for characters that are not properly escaped with a "\"
I have also seen this issue with an input JSON file that was incorrectly formatted as follows:
{
Object1
}
{
Object2
}
Corrected format:
[{
Object1
},
{
Object2
}]
Once the format was corrected, I had no more issues.
Upvotes: 16
Reputation: 200273
I'm going out on a limb here, since you didn't provide your input data or the complete error message, but I guess that your problem is caused by a format mismatch between the output Get-Content
provides and the input ConvertFrom-Json
expects.
Get-Content
reads the input file into an array of strings, whereas ConvertFrom-Json
expects the JSON data in a single string. Also, piping $json
into ConvertFrom-Json
does not change the value of $json
.
Change your code to the following and the error should disapear (provided there is no syntactical error in your input data):
$json = Get-Content 'C:\folder1\test.txt' | Out-String | ConvertFrom-Json
Write-Output $json
Upvotes: 23