将数据帧转换为R中的特定格式JSON

时间:2017-08-09 18:30:41

标签: json r

我正在尝试创建特定的JSON输出以命中特定的cell tower API。以下是每个请求必须在

中的格式
{
"token": "Your_API_Token",
"radio": "gsm",
"mcc": 310,
"mnc": 410,
"cells": [{
    "lac": 7033,
    "cid": 17811
}],
"address": 1
}

我试图使用两种不同的方法和两个不同的数据框从我的数据框中创建R格式。使用第一个数据框

data_frame_1

  cid  lac mcc mnc
1 2241 130 91  2
2 4356 123 91  2
3 3456 124 91  2
4 9801 160 91  2
5 6757 160 91  2

for (i in rownames(data_frame_1)){
  data<-print(toJSON(list(token = "1asdfghjkl", 
radio =  "gsm", mcc = 91, mnc = 2, cells = data_frame_1[(i),1:2]), pretty = TRUE))
}

这会产生以下输出:

    {
  "token": ["1asdfghjkl"],
  "radio": ["gsm"],
  "mcc": [91],
  "mnc": [2],
  "cells": [
    {
      "cid": "2241",
      "lac": "130"
    }
  ]
} 

这个输出非常接近我想要的最终输出,除了在输出中我不想要的前四个组件周围有方括号。

以下是使用的第二种方法和data_frame:

data_frame_2

  token      radio  mcc  mnc  lac  cid
1 1asdfghjkl   gsm   91   2    130  2241
2 1asdfghjkl   gsm   91   2    123  4356
3 1asdfghjkl   gsm   91   2    124  3456
4 1asdfghjkl   gsm   91   2    160  9801
5 1asdfghjkl   gsm   91   2    160  6757

data<-toJSON(unname(split(data_frame_2, 1:nrow(data_frame_2))), pretty = TRUE)

这是输出:

 [
{
  "token": "1asdfghjkl",
  "radio": "gsm",
  "mcc": "91",
  "mnc": "2",
  "lac": "130",
  "cid": "2241"
}
  ]

我希望能够修改任何一行,以便能够生成将json写入发出请求所需的输出所需的输出。

1 个答案:

答案 0 :(得分:1)

您所要做的就是将参数auto_unbox = TRUE添加到toJSON功能。

for(row in rownames(data_frame_1)) {

  list(

    token = "1asdfghjkl", 
    radio =  "gsm", 
    mcc = 91, 
    mnc = 2, 
    cells = data_frame_1[(row), 1:2]

  ) %>%
    toJSON(pretty = TRUE,
           auto_unbox = T) %>%
    print


}