我正在尝试使用以下代码对对象进行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;
}
答案 0 :(得分:5)
这是一个完全有效的解决方案:
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;
}
}
}
答案 1 :(得分:0)
@"\\/Date
部分看起来不对劲。它可能应该是@"\/Date..."
或"\\/Data..."
。 (跟踪"...\\/"
)