我使用ASP.NET MVC4控制器中的Json.Net尝试了ISO格式的tro返回日期
public JsonResult Sales() {
var saleList = new List<Sale>();
...
var str = JsonConvert.SerializeObject(saleList);
return Json(str, JsonRequestBehavior.AllowGet);
}
public class Sale
{
public DateTime saledate { get; set; }
...
}
但它将整个对象json表示法返回为单个字符串。
如何以ISO格式返回日期作为json对象?
答案 0 :(得分:1)
您可以使用ServiceStack JSON serializer执行此操作,但首先必须将其集成到ASP.NET MVC。
安装软件包后,在应用程序启动时配置DateTime序列化:
JsConfig.DateHandler = JsonDateHandler.ISO8601;
为JSON内容创建ActionResult类型:
public class CustomJsonResult : ActionResult
{
private readonly object _data;
private readonly string _content;
private readonly Encoding _encoding;
public CustomJsonResult(object data) : this(data, null, null) { }
public CustomJsonResult(object data, string content) : this(data, content, null) { }
public CustomJsonResult(object data, Encoding encoding) : this(data, null, encoding) { }
public CustomJsonResult(object data, string content, Encoding encoding)
{
_data = data;
_content = content;
_encoding = encoding;
}
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
{
throw new ArgumentNullException("context");
}
HttpResponseBase response = context.HttpContext.Response;
response.ContentType = string.IsNullOrEmpty(_content) ? "application/json" : _content;
if (_encoding != null)
{
response.ContentEncoding = _encoding;
}
response.Write(JsonSerializer.SerializeToString(_data));
}
}
然后您可以将这些方法添加到基本控制器:
protected CustomJsonResult CustomJson(object data)
{
return new CustomJsonResult(data);
}
protected CustomJsonResult CustomJson(object data, string content)
{
return new CustomJsonResult(data, content);
}
protected CustomJsonResult CustomJson(object data, Encoding encoding)
{
return new CustomJsonResult(data, encoding);
}
protected CustomJsonResult CustomJson(object data, string content, Encoding encoding)
{
return new CustomJsonResult(data, content, encoding);
}
最后你可以像这样返回结果:
return CustomJson(saleList);
答案 1 :(得分:0)
使用带有JsonSerializerSettings参数的SerializeObject的重载时,可以设置设置:
public static string SerializeObject(
Object value,
JsonSerializerSettings settings
)
JsonSerializerSettings
有一个名为DateFormatHandling
的属性,用于区分Microsoft格式和ISO格式。
您还可以在JSON.NET中使用自定义转换器。可以使用CustomConverter属性应用自定义转换器。
可以在JSON.NET文档中找到一个示例:http://james.newtonking.com/json/help/index.html
我更喜欢第一种可能性。