Json.Net解析日期时间值错误。

3
我正在尝试使用 JObject.Parse 将 json 字符串转换为 JObject,但遇到错误:“Error parsing positive infinity value. Path 'Modified.Date', line 1, position 52.”
以下是引起错误的 json 部分:
{ ..., "Modified" : { "Date" : ISODate("2013-02-21T22:23:57.118Z"), "User" : "Admin" }, ...}
以下是我用于解析的代码:
var jobj = JObject.Parse(formJson)

更新: 这个json是使用mongodb的.ToJson()扩展方法生成的,通过发送以下jsonwritersettings,它生成了可被json.net解析的json - 新的JsonWriterSettings { OutputMode = JsonOutputMode.JavaScript };


1
那看起来像是自定义日期格式。它是IsoDateTime和默认格式的组合(通常看起来像Date(毫秒时间))。你有没有可能改变生成这个JSON的代码? - Jason Sperske
是的,我已经成功更改了JSON生成代码,生成的JSON如下:{..., "Modified" : { "Date" : new Date(1361492718941), "User" : "Admin", ... },可以被json.net解析。 - camelCaseWarrior
2个回答

5
我认为你需要去掉ISODate。
以下代码是可行的:
String MyJson = "{MyDate   : \"2013-02-21T22:23:57.118Z\" }";
var x = Newtonsoft.Json.Linq.JObject.Parse(MyJson);

0

我尝试在C#中使用正则表达式和转换:

Regex _regex = new Regex(@"\d\d\d\d-\d\d-\d\d");
                    Match _date = _regex.Match(<Your_Date_String>);
                    if (_date.Success)
                    {
                        var datetime = Convert.ToDateTime(_date.Value);
                    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接