当前位置: 首页 > 面试题库 >

从Newtonsoft的JSON序列化器解析JSON DateTime

罗俭
2023-03-14
问题内容

我已经使用Newtonsoft的JSON序列化器序列化了一个对象,而DateTime的实现方式是:

/Date(1237588418563+0000)/

当我在其上$ .evalJSON()时,它是一个对象,但在它上找不到任何正常的Date方法,例如toUTCString。

有什么办法可以解决吗?


问题答案:

使用Json.NET附带的JsonConverters之一处理日期以获得更好的格式。JavaScriptDateTimeConverter将自动为您提供一个JavaScript日期。

public class LogEntry    
{    
  public string Details { get; set; }    
  public DateTime LogDate { get; set; }
}

[Test]
public void WriteJsonDates()
{    
  LogEntry entry = new LogEntry    
  {    
    LogDate = new DateTime(2009, 2, 15, 0, 0, 0, DateTimeKind.Utc),    
    Details = "Application started."    
  };


  string defaultJson = JsonConvert.SerializeObject(entry);    
  // {"Details":"Application started.","LogDate":"\/Date(1234656000000)\/"}

  string javascriptJson = JsonConvert.SerializeObject(entry, new JavaScriptDateTimeConverter());    
  // {"Details":"Application started.","LogDate":new Date(1234656000000)}

  string isoJson = JsonConvert.SerializeObject(entry, new IsoDateTimeConverter());    
  // {"Details":"Application started.","LogDate":"2009-02-15T00:00:00Z"}    
}

文档:
使用Json.NET在JSON中序列化日期



 类似资料:
  • 我的JSON如下: 我找到了Newtonsoft JSON。NET为C#反序列化库。我试着使用它如下: 如何访问对象以获取所有“类型”数据?我尝试了一个循环,但它不起作用,因为对象没有枚举器。

  • 我正在使用vb.net和NewtonsoftJson库解析JSON。 我的JSON数据如下: 我的代码如下: 这不会产生任何输出。 任何帮助,不胜感激。

  • 问题内容: 我们正在将JSON发送到由swagger定义的API,其中一些属性是DateTime,格式为yyyy-MM- ddThh:mm:ss.000Z(毫秒数必须为3位,否则端点上的验证失败),而有些则是Date(否)时间)属性。 我已经看到很多消息说使用这样的格式化程序: 但这不能将DateTimes转换为正确的格式,C#如何处理仅Date类型?它似乎总是序列化为DateTime.MinVa

  • 这是一个旧的应用程序(.Net 4.5)。 我在这里遵循指南:https://weblog.west-wind.com/posts/2012/aug/30/using-jsonnet-for-dynamic-json-parsing 我的目标是有一种方法来存储灵活的json结构,而不将其束缚在静态结构上。例如,在下面的TriggerJson中,实际的触发器字段是字符串类型,应该是json。该jso

  • 它似乎只是简单地删除了转义字符,将一些空字符串转换为空字符串,并将整个内容包装在一组额外的花括号中。就像它被反序列化为不同的序列化格式一样。 在其他SO问题中,答案建议创建一个类来反序列化: 但当我这么做的时候,我得到了一个例外: 我需要一种方法来引用这个响应中的名称和Employee_ID。我对JSON比较陌生。

  • 问题内容: 有什么方法可以用Newtonsoft Json.Net json序列化程序替换内置的WCF服务应用程序JavascriptSerializer? 问题答案: WCF不使用。它使用DataContractJsonSerializer。是的,您可以通过编写自定义消息格式化程序来用Json.NET替换它,如以下博客文章所示。