正确格式化/提取包含日期对象的JSON

正确格式化/提取包含日期对象的JSON,json,Json,我有一个json文件,其中包含日期(对象)的信息,但为了正确提取信息,我无法格式化该文件 JSON文件: [ { "date": "new Date(1430539204557)", "score": 0 }, { "date": "new Date(1431144004557)", "score": 0 }, { "date": "new Date(1431748804557)", "score": 0 } ] 尽管这通

我有一个json文件,其中包含日期(对象)的信息,但为了正确提取信息,我无法格式化该文件

JSON文件:

[
  {
    "date": "new Date(1430539204557)",
    "score": 0
  },
  {
    "date": "new Date(1431144004557)",
    "score": 0
  },
  {
    "date": "new Date(1431748804557)",
    "score": 0
  }
]
尽管这通过了json验证,但当我在页面中显示此数据时,它显示的是“新日期(1431748804557)”,而不是2015年9月到2015年10月。我提取的日期数据是否错误

this.dateDisplay = this.data.map(item => item.date);

应该删除日期值的双引号。 生成用于处理的json文件的示例代码:

var str=[{
“日期”:新日期(1430539204557),
“分数”:0
},
{
“日期”:新日期(1430539204557),
“分数”:0
},
{
“日期”:新日期(1430539204557),
“分数”:0
}];
var fileStr=JSON.stringify(str);
log(fileStr);
saveFile('yourfilename.json','data:application/json',新Blob([fileStr],{type:'}));
函数saveFile(名称、类型、数据){
if(data!=null&&navigator.msSaveBlob)
返回navigator.msSaveBlob(新Blob([data],{type:type}),name);
变量a=$(“”);
var url=window.url.createObjectURL(新Blob([data],{type:type}));
a、 attr(“href”,url);
a、 attr(“下载”,名称);
$(“正文”)。附加(a);
a[0]。单击();
setTimeout(function(){//修复了firefox html删除错误
window.URL.revokeObjectURL(URL);
a、 删除();
}, 500);  
}

您应该删除日期值的双引号。 生成用于处理的json文件的示例代码:

var str=[{
“日期”:新日期(1430539204557),
“分数”:0
},
{
“日期”:新日期(1430539204557),
“分数”:0
},
{
“日期”:新日期(1430539204557),
“分数”:0
}];
var fileStr=JSON.stringify(str);
log(fileStr);
saveFile('yourfilename.json','data:application/json',新Blob([fileStr],{type:'}));
函数saveFile(名称、类型、数据){
if(data!=null&&navigator.msSaveBlob)
返回navigator.msSaveBlob(新Blob([data],{type:type}),name);
变量a=$(“”);
var url=window.url.createObjectURL(新Blob([data],{type:type}));
a、 attr(“href”,url);
a、 attr(“下载”,名称);
$(“正文”)。附加(a);
a[0]。单击();
setTimeout(function(){//修复了firefox html删除错误
window.URL.revokeObjectURL(URL);
a、 删除();
}, 500);  
}

如果要获取每个[date]值,可能需要使用
eval()
(这不安全)将这些值用作“方法”或“实例化新的日期类”

var aData = [
    {
        "date": "new Date(1430539204557)",
        "score": 0
    },
    {
        "date": "new Date(1431144004557)",
        "score": 0
    },
    {
        "date": "new Date(1431748804557)",
        "score": 0
    }
];

aData.forEach(function(oProperty) {
    var oDate = eval(oProperty.date);
    console.log(oDate); // Sat May 02 2015 12:00:04 GMT+0800 (PHT)
});

但是如果您将[date]值作为实际日期值返回会更好。希望这对您的情况有所帮助。

如果您想获得每个[date]值,您可能需要使用
eval()
(这不安全)将这些值作为“方法”或“实例化新的日期类”来使用

var aData = [
    {
        "date": "new Date(1430539204557)",
        "score": 0
    },
    {
        "date": "new Date(1431144004557)",
        "score": 0
    },
    {
        "date": "new Date(1431748804557)",
        "score": 0
    }
];

aData.forEach(function(oProperty) {
    var oDate = eval(oProperty.date);
    console.log(oDate); // Sat May 02 2015 12:00:04 GMT+0800 (PHT)
});

但如果您将[date]值作为实际日期值返回会更好。希望这对您的情况有所帮助。

一些观察结果:

  • 根据OP,
    newdate(xxxxxxxxxx)
    的行为就像一个字符串,而不是一个对象
  • JSON
    中,只需传递
    纪元时间(UNIX时间),然后在解析
    JSON
    时创建日期

一些观察结果:

  • 根据OP,
    newdate(xxxxxxxxxx)
    的行为就像一个字符串,而不是一个对象
  • JSON
    中,只需传递
    纪元时间(UNIX时间),然后在解析
    JSON
    时创建日期


我已经尝试过了,但是json验证器返回一个错误,说明
需要'STRING','NUMBER','NULL','TRUE','FALSE','{','undefined','got'undefined'
仍然没有通过验证-
需要'EOF','}',':','undefined','undefined','got'undefined'
用示例代码编辑了我的答案。如果你接受我的答案,请点击勾号。谢谢。我已经试过了,但是json验证器返回了一个错误,说明
应该是'STRING','NUMBER','NULL','TRUE','FALSE','{','undefined','got'undefined'
仍然没有通过验证-
应该是'EOF','}',':','undefined','undefined'
用示例代码编辑了我的答案。如果你接受我的答案,请点击勾号。谢谢。@Andrius我在那篇文章中没有找到任何建议答案,我的代码也无法使用。@Andrius只是没有按标题去看,试着去理解用例……两者都很不同。@bluePearl你检查过我的答案了吗?@Andrius我在那篇文章中没有找到任何建议答案帖子。@Andrius只是不按标题看,试着理解用例……两者都很不同。@bluePearl你检查过我的答案了吗?添加
eval()
不是最安全的选择;)是的,这就是为什么我会这样说:“虽然如果你返回[date]值作为实际日期值会更好。”在你的回答中添加了关于eval()的注释接受它,我将能够删除我的反对票;如果我使用eval(),我是否可以具体说明日期的显示方式,如:
2017年5月
而不是详细的返回?在我回答您的问题之前,首先如何获取json文件?添加
eval()
不是最安全的选择;)是的,这就是为什么我会这样说:“虽然如果你返回[date]值作为实际日期值会更好。”在你的回答中添加了关于eval()的注释接受它,我将能够删除我的反对票;如果我使用eval()的话,我是否可以得到具体的日期显示方式,比如:
2017年5月
,而不是详细的返回?在我回答您的问题之前,您首先如何获得json文件?