Javascript 将字符串转换为字符串上带有日期对象的json
我试图将字符串转换为json对象,但每次尝试都会出现错误。下面是我的字符串格式。我所做的只是将下面的字符串格式传递给JSON.parse函数,但它不起作用。如果我传递真正的字符串,比如“1/1/2014”,而不是日期对象,那么它工作得非常好。我应该怎么做才能安全地进行json转换Javascript 将字符串转换为字符串上带有日期对象的json,javascript,json,Javascript,Json,我试图将字符串转换为json对象,但每次尝试都会出现错误。下面是我的字符串格式。我所做的只是将下面的字符串格式传递给JSON.parse函数,但它不起作用。如果我传递真正的字符串,比如“1/1/2014”,而不是日期对象,那么它工作得非常好。我应该怎么做才能安全地进行json转换 "[{ \"ID\": 0, \"ApplyDate\": new Date(2011, 0, 3, 0, 0, 0, 0), \"Phy\":37.74,\"Eng\": 40, \"Chem\": 37.62, \
"[{ \"ID\": 0, \"ApplyDate\": new Date(2011, 0, 3, 0, 0, 0, 0),
\"Phy\":37.74,\"Eng\": 40, \"Chem\": 37.62, \"math\": 39.17 },{ \"ID\": 1,
\"ApplyDate\": new Date(2010, 11, 1, 0, 0, 0, 0), \"Phy\": 37.15, \"Eng\":
37.99, \"Chem\": 36.51, \"math\": 37.51 }]";
您应该首先将
Date
转换为String
,然后对json
new Date().toString(); //"Fri Nov 06 2015 19:37:51 GMT+0100"
您可以使用更改日期的格式
var date = new Date();
date.format() //the format
获取yyyyymmdd
格式的方法
所以如果你有目标
var object = { date: theDate };
object.date = object.date.toString();
var json = JSON.stringify(object.date);
这不是JSON,因此,JSON.parse无法帮助您 顺便说一下:
(new Date()).toString();
如果您喜欢您的代码,请尝试将日期对象包装为字符串,然后执行eval
var a = eval("new Date()")
事实上,我认为除了
eval()
之外,没有别的办法了。主要的问题是,sourcestring不是有效的JSON,而是一个类似于文本的结构,它已经作为字符串进行了某种形式的转义
因此,首先删除转义符,s
是OP中的字符串:
s = s.replace("\\", "");
使用eval()将其(返回?)转换为文字:
现在,创建的文本中的Date
对象实际起作用:
console.log(literal[0].ApplyDate.getFullYear());
2011年产出
演示->
现在,您可以使用
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()
他也没有逃避一些引用。我猜这是错误转换的结果。这个字符串流来自服务器端。是否有办法仅在客户端选择该字段并将其转换为日期?如果是这样的话,我该怎么做呢?你可以按照@Hitmands的建议去做,但是使用eval字符串并不安全。您应该避免像这样保存那个日期,它只会导致问题,不是正确的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
}
]