2017-02-19 51 views
0

我有一個名爲「test.json」的json文件,下面說過,並且希望將其轉換爲CSV文件。我已經嘗試過使用python熊貓,但不幸的是沒有成功。 任何人的幫助將是真正的欣賞。需要幫助,將json文件轉換爲CSV

{ 
 
\t "epoch": 1487237243.000440, 
 
\t "comment": null, 
 
\t "header": "mac[#mode|_rate]  : latitude  longitude range  max  age sig_A noise_A sig_B noise_B num loss  kBps", 
 
\t "data": { 
 
\t \t "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], 
 
\t \t "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], 
 
\t \t "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], 
 
\t \t "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], 
 
\t \t "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], 
 
\t \t "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], 
 
\t \t "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], 
 
\t \t "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], 
 
\t \t "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] 
 
\t } 
 
}

回答

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 

使用jsonlitedplyr產生

"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 
0

另一種解決方案:

install.packages(c("jsonlite","dplyr")) 
library(jsonlite) 
library(dplyr) 

# asumme your file is "my_file.json" 
my_data <- as_tibble(fromJSON("my_file.json"))