如何解析R中的特定实体?

时间:2016-05-13 12:53:18

标签: json r jsonlite

我在这些事件中包含事件和日志的JSON文件,示例如下所示:

{
  "sessionEvents": [
    {
      "u": "BC0F6A3A2840B6F48386BABC5F34B480BA4F9929",
      "v": "0.1.0",
      "dv": "Unidentified",
      "t": 1462924115818,
      "uid": "",
      "len": 148012,
      "by": 0,
      "g": "U",
      "cy": "PH",
      "cr": "Unknown",
      "dm": "O+ Xfinit",
      "lat": 0.0,
      "lon": 0.0,
      "l": [
        {
          "e": "100_SESSION_START",
          "o": 24,
          "d": 147988,
          "p": {
            "User_Timezone": "-08:00",
            "Session_nb": "0",
            "Energy_Balance": "89",
            "Global_Playtime": "0",
            "Device_id": "75e64b654c01949",
            "Game_Language": "en",
            "Connection_Type": "WIFI",
            "User_Country": "US",
            "Push_Impact": "None"
          }
        },
        {
          "e": "008_TUTORIAL_STEP_OTHER",
          "o": 7561,
          "d": 0,
          "p": {
            "Screen_id": "scene_screen",
            "Misclicks": "0",
            "Tutorial_Step": "19",
            "Average_Time_Per_Frame": "0",
            "Total_Time": "0"
          }
        }
      ]
    },
    {
      "u": "C950FC733D883E11E36E15A705E05A3CC7748C3A",
      "v": "0.1.0",
      "dv": "OPPO Mirror 5",
      "t": 1462908916463,
      "uid": "",
      "len": 5368,
      "by": 0,
      "g": "U",
      "cy": "PH",
      "cr": "Unknown",
      "dm": "A51w",
      "lat": 0.0,
      "lon": 0.0,
      "l": [
        {
          "e": "100_SESSION_START",
          "o": 169,
          "d": 5199,
          "p": {
            "User_Timezone": "-08:00",
            "Session_nb": "0",
            "Energy_Balance": "0",
            "Global_Playtime": "0",
            "Device_id": "d0de71513e48fba",
            "Game_Language": "en",
            "Connection_Type": "WIFI",
            "User_Country": "US",
            "Push_Impact": "None"
          }
        }
      ]
    }
  ]
}

正如你所看到的,有一个第二级对象“l”包含事件的日志,第三级“p”包含参数,它给我带来了痛苦。我正在尝试将其转换为数据框,但我只需要表中的“100_SESSION_START”日志值(所有参数名称“l”和“p”名称都相同),另外,我需要添加所有来自更高级别对象的参数 - 事件('u','v','dv','t'......)。有没有人知道如何用户R?

upd:在结果中,拥有这样的表会很好 click

2 个答案:

答案 0 :(得分:1)

假设您已将json文件加载到data变量

data <- fromJSON("/home/joel/tmp/input.json")

然后,您可以根据需要迭代每个事件和事件的每个日志:

n<-length(data$sessionEvents$u)
for (i in 1:n) { # Iterate over events
  print(data$sessionEvents$u[i])
  print(data$sessionEvents$v[i])
  print(data$sessionEvents$dv[i])
  print(data$sessionEvents$t[i])
  m<-length(data$sessionEvents$l[i][[1]]$e)
  for(j in 1:m){ # Iterate over logs
    print(data$sessionEvents$l[i][[1]]$e[j])
  }
}

希望它有所帮助。

答案 1 :(得分:0)

您可以使用name: (foo) version: (1.0.0) description: entry point: (index.js) test command: git repository: keywords: author: license: (ISC) 执行此类操作。

lapply