首页 > 解决方案 > 在密钥 ID 上链接 Json 数据以创建全新的 Json 文件

问题描述

我有一个包含站点和价格数组的 Json 文件,我希望将其链接起来,以便所有需要的数据都在一个数组中。

{
  "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
    }
 ]
}

新 Json 创建 Json 的预期结果将是

{
  "stations": [
    {
      "code": "1",
      "name": "United force",
      "DL": 126.97,
      "E10": 118.92
    },
    {
      "code": "2",
      "name": "Toowoon Bay Service Station",
      "E10": 112.90,
      "P95": 125.90,
      "P98": 155.90,
      "U91": 115.20
    }
  ]
}

我想做这个不在客户端的转换,比如我可以运行的 powershell 或 python 或 dart,所以我有新生成的文件(或计划),生成的文件将用作源在我的应用程序(颤振)中。因为如果在客户端即时进行转换将是昂贵/耗时的。

谢谢你。

标签: pythonjsonpowershellflutterdart

解决方案


这将以 powershell 方式转换 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

推荐阅读