【发布时间】:2018-12-26 05:13:00
【问题描述】:
我有两个项目,一个是服务器,另一个是调用者。我的服务器正在从它的函数返回一个对象,当调用者收到结果时,它会以 json 格式接收数据。
类
public class MyClass
{
public int myInt{ get; set; }
public string myString{ get; set; }
public DateTime myDate{ get; set; }
}
服务器端
[HttpPost]
public async Task<ActionResult> Index()
{
var tmpResult = await . . .
return new MyClass();
}
调用方
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "POST";
Stream dataStream = webRequest.GetRequestStream();
WebResponse response = webRequest.GetResponse();
dataStream = response.GetResponseStream();
using (StreamReader reader = new StreamReader(dataStream))
{
responseFromServer = reader.ReadToEnd();
reader.Close();
}
目前,我的回答是:
{"myInt":0,"myString":"a","myDate":"/Date(1531908040342)/"}
我想要达到的效果是这样的:
{"myInt":0,"myString":"a","myDate":"2018-07-18 00:00:00.000"}
我认为通过将 JsonConverter 添加到我的课程中,它会解决我的问题。
public class MyClass
{
public int myInt{ get; set; }
public string myString{ get; set; }
[JsonConverter(typeof(CustomDateTimeConverter))]
public DateTime myDate{ get; set; }
}
class CustomDateTimeConverter : IsoDateTimeConverter
{
public CustomDateTimeConverter()
{
base.DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fff";
}
}
但是,我得到的响应还是一样。我想知道我应该如何改变我的模型来实现它?还是应该将我的响应转换为对象,然后再次重新序列化?
*补充:我希望我不需要输入像DateTime.ToString() 这样的东西。因为这样,我需要将我的响应转换为对象,然后逐个输入。我希望我能得到的是来自服务器的响应,已经将其转换为 ISO 格式而不是 Json 格式
【问题讨论】:
-
@NitinSawant 这将是最坏的情况,因此我需要逐个键入我的类 1,并在
DateTime字段中将其更改为DateTime.ToString()。我希望我能找到更好的解决方案 -
试试这个 var date = DateTime.Now; date.ToString("dd/mm/yyyy h:mm:ss"));
-
@D-johnAnshani 请尝试理解问题的上下文。它是关于 ASP.NET MVC 序列化响应对象的。那里没有手动字符串操作。
-
您是否定义了 JSON.Net 用作序列化程序,如stackoverflow.com/questions/14591750/… 所示? json序列化的默认还是.NET自带的JavaScriptSerializer。
标签: c# json asp.net-mvc-4