【问题标题】:Need assistance to convert a json file to CSV [closed]需要帮助将 json 文件转换为 CSV [关闭]
【发布时间】:2017-02-19 14:40:42
【问题描述】:

我有一个名为“test.json”的 json 文件,如下所述,并希望将其转换为 CSV 文件。我尝试过使用 python pandas,但不幸的是没有成功。 任何人的帮助都会非常感激。

{
	"epoch": 1487237243.000440,
	"comment": null,
	"header": "mac[#mode|_rate]       :    latitude     longitude   range     max     age    sig_A  noise_A    sig_B  noise_B    num loss      kBps",
	"data": {
		"04:e5:48:01:73:29#0000": [48.1499800, 11.5833270, -1.00, 0.00, 0.00, -80.00, -101.00, -96.00, -98.00, 2, 0, 0.138],
		"04:e5:48:01:73:29#0001": [48.1499800, 11.5833270, -1.00, 0.00, 0.00, -80.50, -101.00, -96.50, -102.50, 2, 0, 0.438],
		"04:e5:48:01:73:29#0002": [48.1499800, 11.5833270, -1.00, 0.00, 0.00, -80.50, -99.50, -96.00, -101.00, 2, 0, 1.538],
		"04:e5:48:01:73:29#0003": [48.1499800, 11.5833270, -1.00, 0.00, 0.00, -80.00, -101.00, -97.00, -101.00, 1, 0, 0.138],
		"04:e5:48:01:73:29#0004": [48.1499800, 11.5833270, -1.00, 0.00, 0.00, -80.00, -101.00, -96.00, -101.00, 1, 0, 0.438],
		"04:e5:48:01:73:29#0005": [48.1499800, 11.5833270, -1.00, 0.00, 0.00, -80.00, -101.00, -95.00, -98.00, 1, 0, 1.538],
		"04:e5:48:01:73:29#0006": [48.1499800, 11.5833270, -1.00, 0.00, 0.00, -80.00, -101.00, -95.00, -98.00, 1, 0, 0.138],
		"04:e5:48:01:73:29#0007": [48.1499800, 11.5833270, -1.00, 0.00, 0.00, -80.00, -101.00, -96.50, -101.00, 2, 0, 0.438],
		"04:e5:48:01:73:29#0008": [48.1499800, 11.5833270, -1.00, 0.00, 0.00, -80.00, -101.00, -96.50, -99.50, 2, 0, 1.538]
	}
}

【问题讨论】:

    标签: json csv parsing


    【解决方案1】:

    这是使用jq 的解决方案。

    如果filter.jq 包含以下过滤器

      [ .header | match("[^: ]+";"g") | .string ]
    , ( .data   | keys[] as $k  | [$k] + .[$k] )
    | @csv
    

    然后data.json 包含样本数据

    $ jq -M -r -f filter.jq data.json
    

    生产

    "mac[#mode|_rate]","latitude","longitude","range","max","age","sig_A","noise_A","sig_B","noise_B","num","loss","kBps"
    "04:e5:48:01:73:29#0000",48.14998,11.583327,-1,0,0,-80,-101,-96,-98,2,0,0.138
    "04:e5:48:01:73:29#0001",48.14998,11.583327,-1,0,0,-80.5,-101,-96.5,-102.5,2,0,0.438
    "04:e5:48:01:73:29#0002",48.14998,11.583327,-1,0,0,-80.5,-99.5,-96,-101,2,0,1.538
    "04:e5:48:01:73:29#0003",48.14998,11.583327,-1,0,0,-80,-101,-97,-101,1,0,0.138
    "04:e5:48:01:73:29#0004",48.14998,11.583327,-1,0,0,-80,-101,-96,-101,1,0,0.438
    "04:e5:48:01:73:29#0005",48.14998,11.583327,-1,0,0,-80,-101,-95,-98,1,0,1.538
    "04:e5:48:01:73:29#0006",48.14998,11.583327,-1,0,0,-80,-101,-95,-98,1,0,0.138
    "04:e5:48:01:73:29#0007",48.14998,11.583327,-1,0,0,-80,-101,-96.5,-101,2,0,0.438
    "04:e5:48:01:73:29#0008",48.14998,11.583327,-1,0,0,-80,-101,-96.5,-99.5,2,0,1.538
    

    【讨论】:

      【解决方案2】:

      使用jsonlitedplyr 的另一种解决方案:

      install.packages(c("jsonlite","dplyr"))
      library(jsonlite)
      library(dplyr)
      
      # asumme your file is "my_file.json"
      my_data <- as_tibble(fromJSON("my_file.json"))
      

      【讨论】:

        猜你喜欢
        • 2022-01-05
        • 2011-07-09
        • 1970-01-01
        • 1970-01-01
        • 2019-02-19
        • 1970-01-01
        • 1970-01-01
        • 2015-04-20
        • 2020-12-25
        相关资源
        最近更新 更多