Json unexpected character 

480

You need to find a way to have Flutter deal with the UTF-8 Byte Order Mark (0xEF 0xBB 0xBF), OR write the file as UTF8 without the BOM.

If you're using PowerShell 6 or up, you can use

Set-Content "testJson.json" -Encoding utf8NoBOM

For PowerShell below version 6, that is not available, so you can use

$json = $data | Select-Object -Property stations | ConvertTo-Json

# [System.IO.File]::WriteAllText() defaults to UTF8 without BOM
# use an absolute path here
[System.IO.File]::WriteAllText("D:\Test\testJson.json", $json)
Share:
480
Casper
Author by

Casper

Updated on December 24, 2022

Comments

  • Casper
    Casper over 1 year

    I am using below code to regenerate my Json using PowerShell, however it creates unexpected character before the start of the json { tag.

    <#$data = Get-Content -Raw -Path myfile.json | ConvertFrom-Json#>
    
    $data = @"
    {
      "stations": [
        {
          "code": "1",
          "name": "United force"
        },
        {
          "code": "2",
          "name": "Toowoon Bay Service Station"
        }
    ],
    
     "prices": [
        {
          "stationcode": "1",
          "fueltype": "DL",
          "price": 126.97
        },
        {
          "stationcode": "1",
          "fueltype": "E10",
          "price": 118.92
        },
        {
          "stationcode": "2",
          "fueltype": "E10",
          "price": 112.90
        },
        {
          "stationcode": "2",
          "fueltype": "P95",
          "price": 125.90
        },
        {
          "stationcode": "2",
          "fueltype": "P98",
          "price": 155.90
        },
        {
          "stationcode": "2",
          "fueltype": "U91",
          "price": 115.20
        }
     ]
    }
    "@ | ConvertFrom-Json
    
    
    foreach ($price in $data.prices) {
        $data.stations | 
        Where-Object { $_.code -eq $price.stationcode } |
        Add-Member -MemberType NoteProperty -Name $price.fueltype -Value $price.price
    }
    
    $data | Select-Object -Property stations | ConvertTo-Json | Set-Content "testJson.json" -Encoding UTF8
    

    enter image description here

    When calling this file after uploading, I am having trouble reading the json file due to that unexpected character.

    Hope someone can help in the PowerShell code to ensure there is no character like that, I may be doing something easy but not sure how.

    I am reading the generated json file after the PowerShell to Flutter, which throws the error as shown below enter image description here

    Thanks,

    • js2010
      js2010 almost 4 years
      get-content -encoding utf8
  • mklement0
    mklement0 almost 4 years
    Nice, though it's worth mentioning that -Encoding utf8NoBOM is implied in PS Core.
  • Casper
    Casper over 3 years
    Thank you for the reply and showing how to see whats available in the PSVersion @lit