我正在尝试将字符串转换为json对象,但每次尝试我都会收到错误。下面是我的字符串格式。我所做的就是将下面的字符串格式传递给JSON.parse函数,但它没有用。如果我通过真正的字符串,如" 1/1/2014"而不是日期对象,它完美地工作。我该怎么做才能安全地进行这种json转换。
breaks <- c(-1e9, 0.3, 0.7, 1)
df1 %>%
mutate(grp = cut(pc_x, breaks=breaks, labels=FALSE)) %>%
group_by(grp)
## Source: local data frame [100 x 4]
## Groups: grp [3]
## idx x pc_x grp
## (int) (dbl) (dbl) (int)
## 1 59 -2.9930901 0.00000000 1
## 2 18 -2.6564554 0.01010101 1
## 3 19 -2.4404669 0.02020202 1
## 4 39 -2.4142076 0.03030303 1
## 5 22 -1.7813084 0.04040404 1
## .. ... ... ... ...
答案 0 :(得分:1)
这不是JSON,所以,JSON.parse无法帮助你......
顺便说一下:
"new Date(2011, 0, 3, 0, 0, 0, 0)"
获取日期的最佳方法是将其编码为字符串...
(new Date()).toString();
如果您爱上了您的代码,请尝试将日期对象包装为字符串,然后执行eval ...
var a = eval("new Date()")
答案 1 :(得分:1)
因为我不认为除eval()
之外还有其他办法。主要的问题是,sourcestring不是有效的JSON,而是类似于字面的结构,它已经通过某种类型的转义作为字符串。
首先删除转义符,s
是来自OP的字符串:
s = s.replace("\\", "");
使用eval()
将其转换(返回?)到文字:
var literal = eval(s);
现在,创建的文字中的Date
对象实际上有效:
console.log(literal[0].ApplyDate.getFullYear());
输出2011
演示 - &gt;的 http://jsfiddle.net/hv7ar3qr/ 强>
现在,您可以使用
将literal
恢复为有效的JSON字符串
var json = JSON.stringify(literal);
json
将如下所示:
[
{
"ID": 0,
"ApplyDate": "2011-01-02T23:00:00.000Z",
"Phy": 37.74,
"Eng": 40,
"Chem": 37.62,
"math": 39.17
},
{
"ID": 1,
"ApplyDate": "2010-11-30T23:00:00.000Z",
"Phy": 37.15,
"Eng": 37.99,
"Chem": 36.51,
"math": 37.51
}
]
JSON.parse(json)
可用于将json
转换为可迭代的JSON对象。还有很长的路要走,第一步需要eval()
。
答案 2 :(得分:0)
您应首先将Date
转换为String
,然后对json
new Date().toString(); //"Fri Nov 06 2015 19:37:51 GMT+0100"
您可以使用
更改Date
的格式
var date = new Date();
date.format() //the format
Here获取yyyymmdd
格式的方法
所以如果你有对象
var object = { date: theDate };
object.date = object.date.toString();
var json = JSON.stringify(object.date);