2017-08-09 64 views
0

我正在尝试创建特定的JSON输出以打击特定的单元塔API。这里是每个请求必须在的格式将数据帧转换为R中的特定格式化JSON

{ 
"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写入输出需要的输出。

+0

要删除这些框,可以将'auto_unbox = TRUE'参数添加到'toJSON'函数中... – maloneypatr

回答

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 


} 
相关问题