2

我想将日期转换为 JSON 格式。Rall.elasticities data.frame看起来像这样:

 PREVIOUS_START_DATE PREVIOUS_PRICE PREVIOUS_QUANTITY PRE_No_OF_WEEKS CURRENT_START_DATE
         2015-12-20           2.79           20680.5               2         2015-12-20         
         2016-01-17           2.29           21049.5               4         2016-01-17         
         2016-01-31           1.69           24689.5               2         2016-01-31      

我在用,

 x <- toJSON(unname(split(all.elasticities, 1:nrow(all.elasticities))))

我得到的输出是,

"[{\"PREVIOUS_START_DATE\":16789,\"PREVIOUS_PRICE\":2.79,\"PREVIOUS_QUANTITY\":20680.5,\"PRE_No_OF_WEEKS\":2,\"CURRENT_START_DATE\":16789},{\"PREVIOUS_START_DATE\":16817,\"PREVIOUS_PRICE\":2.29,\"PREVIOUS_QUANTITY\":21049.5,\"PRE_No_OF_WEEKS\":4,\"CURRENT_START_DATE\":16817},{\"PREVIOUS_START_DATE\":16831,\"PREVIOUS_PRICE\":1.69,\"PREVIOUS_QUANTITY\":24689.5,\"PRE_No_OF_WEEKS\":2,\"CURRENT_START_DATE\":16831}]"

日期正在转换为数字。我想保持日期格式。

4

2 回答 2

1

library(jsonlite)适用于日期格式,也无需拆分 data.frame 。

 str(all.elasticities)
'data.frame':   3 obs. of  5 variables:
 $ PREVIOUS_START_DATE: Date, format: "2015-12-20" "2016-01-17" "2016-01-31"
 $ PREVIOUS_PRICE     : num  2.79 2.29 1.69
 $ PREVIOUS_QUANTITY  : num  20680 21050 24690
 $ PRE_No_OF_WEEKS    : int  2 4 2
 $ CURRENT_START_DATE : Date, format: "2015-12-20" "2016-01-17" "2016-01-31"


> jsonlite::toJSON(all.elasticities, pretty=T)
[
  {
    "PREVIOUS_START_DATE": "2015-12-20",
    "PREVIOUS_PRICE": 2.79,
    "PREVIOUS_QUANTITY": 20680.5,
    "PRE_No_OF_WEEKS": 2,
    "CURRENT_START_DATE": "2015-12-20"
  },
  {
    "PREVIOUS_START_DATE": "2016-01-17",
    "PREVIOUS_PRICE": 2.29,
    "PREVIOUS_QUANTITY": 21049.5,
    "PRE_No_OF_WEEKS": 4,
    "CURRENT_START_DATE": "2016-01-17"
  },
  {
    "PREVIOUS_START_DATE": "2016-01-31",
    "PREVIOUS_PRICE": 1.69,
    "PREVIOUS_QUANTITY": 24689.5,
    "PRE_No_OF_WEEKS": 2,
    "CURRENT_START_DATE": "2016-01-31"
  }
] 
于 2016-03-26T11:47:03.693 回答
0

正如评论中提到的,您需要先将日期转换为字符:

x = as.Date("2016-01-01")
RJSONIO::toJSON(as.character(x))

当不转换为字符时,值变为数字,when 表示自 1970 年以来的天数,例如

as.numeric(x)
as.numeric(x)/365
于 2016-03-26T11:44:20.950 回答