我在JSON中有使用JSON.NET库从ASP.NET页面生成的日期。这些日期如下:
"LastModifiedDate": "\/Date(1301412877000-0400)\/"
如何使用Flex 3 Professional中的ActionScript解析这些问题?我希望以原生数据格式提供此功能。
注意:我在这里没有问的是如何使用as3corelib解析JSON提要。我有使用该库反序列化的JSON,但日期未解码。这就是为什么我需要知道如何解码这种日期格式。
答案 0 :(得分:2)
您需要使用as3corelib的JSON实现将字符串解码为Objects。
答案 1 :(得分:1)
在ASP中我使用此函数来获取Json日期
public static double JsonTime(DateTime dt)
{//Convert datetime to a Json Datetime
DateTime d1 = new DateTime(1970, 1, 1);
DateTime d2 = dt.ToUniversalTime();
TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);
return Math.Round( ts.TotalMilliseconds,0);
}
然后在JavaScript中使用:
if (data.indexOf("\/Date(")==7)
return new Date(+data.replace(/\D/g, ''));
如果有帮助则转换回日期
你也会玩单引号和双引号,但就我而言,我找不到在Net Framework 3上使用Json字符串服务器端的解码器!
如果在代码中使用String =“\ u0027”,那么字符串已经被转换,最后我编写了一个函数,该函数使用循环来完成作业。
string Padding = "000";
for (int f = 1; f <= 256; f++)
{
string Hex = "\\u" + Padding.Substring(0, 4 - f.ToString().Length) + f;
string Dec = "&#" + Int32.Parse(f.ToString(), NumberStyles.HexNumber) + ";";
HTML = HTML.Replace(Hex, Dec);
}
HTML = System.Web.HttpUtility.HtmlDecode(HTML);
我知道不好但是如果你有更好的答案,请告诉我!
答案 2 :(得分:1)
/**
* Converts 'Unix tick' format JSON Date to AS3 Date instances.
* Example json input: "{\"BarDate\":\"\/Date(1334672700000)\/\" }"
* Example json input: "{\"BarDate\":\"\/Date(1334672700000+0000)\/\" }"
*
* @param json date from JSON
* @return Date if conversion possible and worked else null.
*/
public static function parseJSONUnixTickDateToDate(json:String):Date
{
var date:Date = null;
if (json)
{
json = json.substring(json.indexOf("(") + 1, json.indexOf(")"));
var arr:Array = json.split("+");
date = new Date(Number(arr[0]));
}
return date;
}