繁体   English   中英

C#/ ASP.NET JSON日期反序列化

[英]C#/ASP.NET JSON date deserialize

我正在尝试使用以下代码对一个对象进行deserilize,我想知道正确的正则表达式将取代json日期。 当我运行以下代码时,正则表达式永远不会被触发。 我在json字符串中使用标准的JSON日期格式。

{
    "UniqueId": "1000000003",     
    "Id": 3, 
    "ModifyTimestamp": "/Date(1338857699743)/"         
}

string json = // see above
string p = @"\\/Date\((\d+)\+\d+\)\\/";
MatchEvaluator matchEvaluator = new MatchEvaluator(convertJsonDateToDateString);
Regex reg = new Regex(p);
json = reg.Replace(json, matchEvaluator);
JavaScriptSerializer serializer = new JavaScriptSerializer();            
Student student = serializer.Deserialize<Student>(json) as Student; 



public static string convertJsonDateToDateString(Match m) {
        string result = string.Empty;
        DateTime dt = new DateTime(1970, 1, 1);
        dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value));
        dt = dt.ToLocalTime();
        result = dt.ToString("yyyy-MM-dd HH:mm:ss");
        return result;
    }

这是一个完全有效的解决方案:

using System;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace ResolveOverlapIssue
{
    public partial class Form1 : Form
    {
        private static void DoSomethingElse<T>(ref T Id)
        {
            int i = 00;
        }

        public Form1()
        {
            InitializeComponent();

            string json = "{" +
                          "UniqueId: 1000000003," +
                          "Id: 3," +
                          "ModifyTimestamp: /Date(1338857699743)/" +
                          "}";

            MatchEvaluator matchEvaluator = ConvertJsonDateToDateString;
            var reg = new Regex(@".Date\(\d+\)\/.");
            json = reg.Replace(json, matchEvaluator);

        }

        public static string ConvertJsonDateToDateString(Match m)
        {
            var dt = new DateTime(1970, 1, 1);
            dt = dt.AddMilliseconds(long.Parse(m.Groups[1].Value));
            dt = dt.ToLocalTime();
            var result = dt.ToString("yyyy-MM-dd HH:mm:ss");
            return result;
        }
    }
}

@"\\\\/Date部分看起来不对。它可能应该是@"\\/Date...""\\\\/Data..." 。(同样用于尾随"...\\\\/"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM