user3770612
user3770612

Reputation: 1769

"Invalid JSON primitive" error when converting JSON file

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

Answers (4)

bpilling
bpilling

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

uranibaba
uranibaba

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

itrjll
itrjll

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

Ansgar Wiechers
Ansgar Wiechers

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

Related Questions