Javascript 在json文件中定义日期
我想知道如何在json文件中设置今天的日期,就像我们在js中使用的一样 有没有在json文件中指定Date.today()的选项 因为,json数据具有date对象,每当我们读取json文件时,它都会指定系统日期 希望你能理解我想说的话 提前感谢,Javascript 在json文件中定义日期,javascript,json,date,Javascript,Json,Date,我想知道如何在json文件中设置今天的日期,就像我们在js中使用的一样 有没有在json文件中指定Date.today()的选项 因为,json数据具有date对象,每当我们读取json文件时,它都会指定系统日期 希望你能理解我想说的话 提前感谢, -Raja.JSON是一种结构化传输格式。它没有逻辑性 但有以下几种选择: 为什么不在读取文件时只获取日期呢 让服务器生成包含生成日期的JSON。但是,如果您想要当前日期,这并不理想。当您读取文件时,服务器生成的日期已经过去 构建一个解析字符串并使其
-Raja.JSON是一种结构化传输格式。它没有逻辑性 但有以下几种选择:
@{}
中。获取内部命令,确定命令并执行替换
var jsonString = '{"data1" : "foo","date" : "@{currentdate}"}'
在本例中,我将找到@{currentdate}
。我应该创建一个与此命令对应的函数,在读取期间将@{currentdate}
替换为当前日期(以您想要的格式)
结果是这样的:
jsonString = '{"data1" : "foo","date" : "Fri May 04 2012 01:17:07 GMT-0700 (PDT)"}'
var jsonTxt = '[{' +
'"data1": "foo",' +
'"Date": "",' +
'"childs": [{' +
'"data2": "stack",' +
'"Date": ""' +
'}{}{}...]}]'; //and-on-and-on as in your comment
myData = JSON.parse(jsonTxt, function ( key, value ) {
if ( key === 'Date') { return new Date(); }
//any additonal custom logic you may need later...
});
当您读取文件时,仅仅计算当前系统数据不是更容易吗?我可能在这里缺乏上下文,但我不认为在文档中存储上下文有什么意义 如果你真的需要这样做,你可以做如下
var jsonObject = {"now":"new Date()"};
var date = eval(jsonObject.now);
如果您想存储日期,我更希望以yyyy/mm/dd hh:mm:ss或类似格式的字符串形式存储,并在我想以所需语言读取日期时在日期对象中解析它
obj = {
dates : ['2012/04/30 10:14:23', '2012/05/01 05:34:01']
}
我不太明白你到底想要什么,使用eval方法(这是一种丑陋的做法),你可以添加一个方法来将实际日期放入object中,还可以在children中添加他自己,并调用children中添加的方法
obj = {
data : "foo",
addDate : function() {
this.date = newDate();
if (this.children) {
for (var i = 0; i < this.children.length; i++) {
this.children[i].addDate = this.addDate;
this.children[i].addDate();
}
}
},
children : [{
data : "foo2"
}]
}
obj={
数据:“foo”,
addDate:函数(){
this.date=newDate();
如果(这是儿童){
for(var i=0;i
PS如果要将其存储在文件中,则必须使用eval方法(不推荐)将方法存储为字符串或每次加载文件时都使用
jsonLoaded; // this var has the json that you store in a file;
var addDate = function() {
this.date = newDate();
if (this.children) {
for (var i = 0; i < this.children.length; i++) {
this.children[i].addDate = this.addDate;
this.children[i].addDate();
}
}
this.addDate = null; // remove the function we have added
// delete this.addDate; // if is compatible with browser
}
jsonLoaded.addDate = addDate;
jsonLoaded.addDate();
jsonload;//这个变量包含存储在文件中的json;
var addDate=函数(){
this.date=newDate();
如果(这是儿童){
for(var i=0;i
您无法使用函数字符串化json对象,因此,在添加addDate方法后的第二个方法中,我们将其从json对象中删除(您也可以删除this.addDate,但我不知道它是否在IE中工作)服务器端可以生成ISO格式的json日期,例如“2012-04-30T02:15:12.356Z” 然后客户端可以解析并加载到date对象中
new Date(Date.parse("2012-04-30T02:15:12.356Z"))
<>你可以考虑利用流行的图书馆,如Jim.j/P> 然后,您可以在json中将日期存储为YYYY-MM-DD,并让矩处理解析:
var dateString = '2012-11-01';
var someday = moment(dateString);
var formattedDate = someday.format('ddd, DD MMM YYYY'); // 'Thu, 01 Nov 2012'
我建议您考虑使用()解析器,因为它解析所有标准JSON,但也允许您添加自定义解析处理逻辑,称为<代码> Realver < /Cuff>函数,这非常适合您的场景。使用自定义处理程序调用JSON解析器的基本语法如下所示:
jsonString = '{"data1" : "foo","date" : "Fri May 04 2012 01:17:07 GMT-0700 (PDT)"}'
var jsonTxt = '[{' +
'"data1": "foo",' +
'"Date": "",' +
'"childs": [{' +
'"data2": "stack",' +
'"Date": ""' +
'}{}{}...]}]'; //and-on-and-on as in your comment
myData = JSON.parse(jsonTxt, function ( key, value ) {
if ( key === 'Date') { return new Date(); }
//any additonal custom logic you may need later...
});
var myObject=JSON.parse(myJSONtext,reviveerfunction)代码>
使用示例输入作为指导,可以将其设置为如下方式:
jsonString = '{"data1" : "foo","date" : "Fri May 04 2012 01:17:07 GMT-0700 (PDT)"}'
var jsonTxt = '[{' +
'"data1": "foo",' +
'"Date": "",' +
'"childs": [{' +
'"data2": "stack",' +
'"Date": ""' +
'}{}{}...]}]'; //and-on-and-on as in your comment
myData = JSON.parse(jsonTxt, function ( key, value ) {
if ( key === 'Date') { return new Date(); }
//any additonal custom logic you may need later...
});
网站上提供了对JSON的一般介绍,以及一些关于JSON的简要介绍信息,该页面还包括一些使用场景。收集所有要传输到
Collection<String> dates = new ArrayList<String>();
Collection dates=new ArrayList();
将此集合转换为json对象,然后在接收端将其转换回最新状态。您可以使用joda日期时间API进行转换。我使用java中的Gson创建json输出,但Gson不允许我将javascript函数放入json中。这就是我要做的:使用替换标记来放置代码(就像前面的答案之一)。然后获取json的文本,替换标记,然后将文本保存到json文件中:
Map<String, String> dynamicDates = new HashMap<>();
dynamicDates.put("d1", "new Date()");
dynamicDates.put("d2", "new Date(2015, 0, 1, 9, 30)");
dynamicDates.put("d3", "new Date(2015, 0, 1, 12, 30)");
JsonObject json = new JsonObject();
JsonObject root = new JsonObject();
JsonObject level_1_A = new JsonObject();
JsonObject level_1_B = new JsonObject();
json.add("root", root);
root.add("level_1_A", level_1_A);
root.add("level_1_B", level_1_B);
level_1_A.addProperty("d1", "${d1}");
level_1_A.addProperty("d2", "${d2}");
level_1_B.addProperty("d3", "${d3}");
StringBuilder sb = new StringBuilder();
new GsonBuilder().setPrettyPrinting().create().toJson(json, sb);
String str = sb.toString();
for (String key : dynamicDates.keySet()) {
str = str.replace("\"${" + key + "}\"", dynamicDates.get(key));
}
String jsonText = str;
String javascriptText = "var myJson = " + str + ";";
System.out.println(jsonText);
System.out.println(javascriptText);
我对json的使用通常是将其保存为带有赋值的javascript,因此这对我来说一直很有效。不仅仅是一个日期。我在json数据中有很多日期对象。边读边约会不是个好主意。我需要用json本身来完成它。还有其他方法吗?@RajaGopal让服务器生成json文件,以便它可以附加当前生成的日期。恕我直言,JSON不包含逻辑。这只是一种传输格式。@RajaGopal然后使用递归函数来完成。谢谢,但是,当我们从json文件读取时,我们将得到一个json对象。如何将@{xxx}值替换为原始值?是否可以获取json字符串并替换?@RajaGopal我想您也可以直接替换json字符串。但是如果你把它作为一个对象,你必须做递归来找到那些特殊的标记,并在读取时用当前日期替换它们。我需要在json本身上完成它。还有别的办法吗?@RajaGopal你应该澄清你所说的“等级问题”是什么意思。在json对象的不同深度是否会出现多个“date”条目?我的json数据应该是这样的,[{“data1”:“foo”,“date”:“childs”:[{“data2”:“stac”: