我有这个课程:
public class EncuestaRespuesta
{
public string idCaso { get; set; }
public string tipoEncuesta { get; set; }
public string codMovimiento { get; set; }
public string motivoRetirada { get; set; }
public string duracion { get; set; }
public DateTime fechaHora { get; set; }
public string gestor { get; set; }
public List<RespuestasEncuesta> listRespuestasEncuestas { get; set;}
}
public class RespuestasEncuesta
{
public string pregunta { get; set; }
public string respuesta { get; set; }
public string numOrdenTrabajo { get; set; }
}
使用JSON.NET,
// https://www.newtonsoft.com/json/help/html/NullValueHandlingIgnore.htm
var settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
};
settings.Converters.Add(new Newtonsoft.Json.Converters.IsoDateTimeConverter());
var json = JsonConvert.SerializeObject(request, Formatting.Indented, settings);
当我调用REST API(HttpClient PostAsync
)时,我收到错误:
&#34;服务器提交了协议违规。 节= ResponseStatusLine&#34;错误:ServerProtocolViolation
我不知道为什么。我的JSON字符串:
{
"idCaso": "5009E000007Hp94QAD",
"codMovimiento": "1",
"motivoRetirada": "2",
"duracion": "0",
"fechaHora": "2018-03-20T12:56:36.4841861Z",
"gestor": "GESTOR SALESFORCE",
"tipoEncuesta": "T3_1018_RM",
"listRespuestasEncuestas": [
{
"numOrdenTrabajo": "",
"pregunta": "",
"respuesta": ""
}
]
}
我想要这个JSON字符串,在我的测试中没问题:
{
"idCaso": "5009E000007Hp94QAC",
"codMovimiento": "1",
"motivoRetirada": "1",
"duracion": "",
"fechaHora": "2018-02-06T14:40:43.511Z",
"gestor": "",
"tipoEncuesta": "T3_1018_RM",
"listRespuestasEncuestas": [
{
"numOrdenTrabajo": "",
"pregunta": "",
"respuesta": ""
}
]
}
问题:日期时间字段:
"fechaHora": "2018-03-20T12:56:36.4841861Z",
错误
"fechaHora": "2018-02-06T14:40:43.511Z"
确定
有什么建议吗?
答案 0 :(得分:1)
我将IsoDateTimeConverter
与DateTimeFormat
:
// https://www.newtonsoft.com/json/help/html/NullValueHandlingIgnore.htm
var settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
};
settings.Converters.Add(new Newtonsoft.Json.Converters.IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-ddTHH:mm:ss.FFFZ" });
var json = JsonConvert.SerializeObject(request, Formatting.Indented, settings);
日期JSON
https://www.newtonsoft.com/json/help/html/DatesInJSON.htm
how to force netwtonsoft json serializer to serialize datetime property to string?
Serializing multiple DateTime properties in the same class using different formats for each one
Newtonsoft.json IsoDateTimeConverter and DateFormatHandling
日期时间格式UTC
How can I format DateTime to web UTC format?
https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings