我有这个课程:
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; }
}
列表 listRespuestasEncuestas
null 或 Count = 0
使用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()); // "fechaHora": "2018-02-23T12:42:52.4456475+01:00",
var json = JsonConvert.SerializeObject(request, Formatting.Indented, settings);
结果:
{
"idCaso": "5009E000007Hp94QAC",
"tipoEncuesta": "T3_1018_RM",
"codMovimiento": "1",
"motivoRetirada": "2",
"duracion": "0",
"fechaHora": "2018-03-20T09:18:00",
"gestor": null,
"listRespuestasEncuestas": []
}
我想要这个JSON字符串:
{
"idCaso": "5009E000007Hp94QAC",
"codMovimiento": "1",
"motivoRetirada": "1",
"duracion": "",
"fechaHora": "2018-02-06T14:40:43.511Z",
"gestor": "",
"tipoEncuesta": "T3_1018_RM",
"listRespuestasEncuestas": [
{
"numOrdenTrabajo": "",
"pregunta": "",
"respuesta": ""
}
]
}
有什么建议吗?
答案 0 :(得分:4)
您可以在Json.NET中使用serialization callbacks在序列化空列表或空列表时伪造空值。
e.g。
[OnSerializing]
void OnSerializingMethod(StreamingContext context)
{
if (listRespuestasEncuestas == null)
{
listRespuestasEncuestas = new List<RespuestasEncuesta>();
}
if (!listRespuestasEncuestas.Any())
{
//Add an empty item to the list.
}
}
[OnSerialized]
void OnSerializedMethod(StreamingContext context)
{
//if the list contains a single empty item, remove it and return the list to either empty or null.
}
[OnDeserialized]
void OnDeserializedMethod(StreamingContext context)
{
//What to do if we receive a list with a single empty item? Do you want to keep it? Decide here.
}
应该说,这是一个非常规的要求,很难看到实施它的任何价值。