2015-04-21 63 views
0

我有一个奇怪的json文件,其中一些行元素缺少总数。我试图用NA或null填充它们,但我无法瞄准它。如何在json中填充空元素

这里是JSON的情况 实施例的一个示例:

require(RJSONIO)  

json_file <- '[{"name":"Doe, John","group":"Red","age (y)":24,"height (cm)":182,"wieght (kg)":74.8}, 
    {"name":"Doe, Jane","group":"Green","age (y)":30,"height (cm)":170,"wieght (kg)":70.1,"score":500}, 
    {"name":"Smith, Joan","age (y)":41,"height (cm)":169,"wieght (kg)":60,"score":null}, 
    {"name":"Brown, Sam","group":"Green","age (y)":22,"height (cm)":183,"wieght (kg)":75,"score":865}, 
    {"name":"Jones, Larry","group":"Green","age (y)":31,"height (cm)":178,"wieght (kg)":83.9,"score":221}, 
    {"name":"Murray, Seth","group":"Red","age (y)":35,"height (cm)":172,"wieght (kg)":76.2}, 
    {"name":"Doe, Jane","group":"Yellow","age (y)":22,"height (cm)":164,"wieght (kg)":68,"score":902}]' 


json_file <- fromJSON(json_file) 

从第一行它缺少来自第三行的得分标签它缺少组标签和从第六行它缺少分数。

的Json了多层次:

[ 
    { 
     "id": 1, 
     "name": "Lora", 
     "surname": "Ann", 
     "time": 30, 
     "light": { 
     "full": 4, 
     }, 
     "height": { 
     "id": 156, 
     "weight": { 
      "pounds": 88, 
     } 
     } 
    }, 
    { 
     "id": 2, 
     "name": "Ann", 
     "surname": "Lora", 
     "light": { 
     "full": 2, 
     }, 
     "height": { 
     "id": 173, 
     "weight": { 
      "pounds": 55, 
      "kilo": 56, 
     } 
     } 
    } 
] 

回答

0

jsonlite将使这一成数据帧,并以NAS自动填写为你遗漏值。

require(jsonlite) 
json_file <- fromJSON(json_file) 

      name group age (y) height (cm) wieght (kg) score 
1 Doe, John Red  24   182  74.8 NA 
2 Doe, Jane Green  30   170  70.1 500 
3 Smith, Joan <NA>  41   169  60.0 NA 
4 Brown, Sam Green  22   183  75.0 865 
5 Jones, Larry Green  31   178  83.9 221 
6 Murray, Seth Red  35   172  76.2 NA 
7 Doe, Jane Yellow  22   164  68.0 902 


> fromJSON(json_file2, flatten = TRUE) 
    id name surname time light.full height.id height.weight.pounds height.weight.kilo 
1 1 Lora  Ann 30   4  156     88     NA 
2 2 Ann Lora NA   2  173     55     56 
> fromJSON(json_file2, flatten = FALSE) 
    id name surname time full height.id height.weight.pounds height.weight.kilo 
1 1 Lora  Ann 30 4  156     88     NA 
2 2 Ann Lora NA 2  173     55     56 
+0

感谢您的快速回答。你知道它不仅适用于json的第一级吗?我用一个数据例子更新了这个问题。 – Polya

+0

您提供的JSON示例无效;) 但是,如果我们修复它们,我们会发现它可以在多个层次上使用。 –

+0

再次感谢您的快速回放。请你能告诉我提供的json有什么问题,因为我是新手,我想开始学习? – Polya