如何使用 ActionScript 解析 JSON 日期?

发布于 2024-11-06 08:48:28 字数 322 浏览 2 评论 0原文

我有 JSON 格式的日期,这些日期是使用 JSON.NET 库从 ASP.NET 页面生成的。这些日期如下所示:

"LastModifiedDate": "\/Date(1301412877000-0400)\/"

How do I parse those with ActionScript from Flex 3 Professional?我想以本机数据格式保存它。

注意:我在这里问的不是如何使用 as3corelib 解析 JSON feed。我使用该库反序列化了 JSON,但日期未解码。这就是为什么我需要知道如何解码这个日期格式。

I have dates in JSON which are generated from ASP.NET pages using the JSON.NET library. These dates look like this:

"LastModifiedDate": "\/Date(1301412877000-0400)\/"

How do I parse these with ActionScript from Flex 3 Professional? I'd like to have this in a native data format.

NOTE: What I'm not asking here is how do I parse a JSON feed with as3corelib. I have the JSON deserialized with that library but the dates are not decoded. That is why I need to know how to decode this date format.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

多情出卖 2024-11-13 08:48:28

您需要使用 as3corelib 的 JSON 实现将字符串解码为对象。

You'll want to use as3corelib's JSON implementation to decode your string into Objects.

岁吢 2024-11-13 08:48:28
    /**
     * 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;
    }
    /**
     * 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;
    }
巴黎盛开的樱花 2024-11-13 08:48:28

在 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);

我知道不好,但如果您有更好的答案,请告诉我!

In ASP I use this function to get a Json date

 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);
    } 

and then in JavaScript I use:

if (data.indexOf("\/Date(")==7)
       return  new Date(+data.replace(/\D/g, ''));

to convert back to a date if that helps

You will also have fun with single and double quotes but for the life of me I can not find a decoder that works server side with Json strings on Net Framework 3!

if you use String ="\u0027" in your code then the string is already converted and in the end I wrote a function that about does the job using a loop.

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);

Bad I know but if you have a better answer then please let me know!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文