有没有办法设置空值的默认表示应该在Json.NET中? 更具体地说,是数组中的空值。
鉴于课程
public class Test
{
public object[] data = new object[3] { 1, null, "a" };
}
然后这样做
Test t = new Test();
string json = JsonConvert.SerializeObject(t);
给出
{"data":[1,null,"a"]}
是否可以使它看起来像这样?
{"data":[1,,"a"]}
不使用string.Replace。
答案 0 :(得分:0)
想出来。我必须实现一个自定义的JsonConverter。 正如其他人提到的那样,这不会产生有效/标准的Json。
public class ObjectCollectionConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(object[]);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
object[] collection = (object[])value;
writer.WriteStartArray();
foreach (var item in collection)
{
if (item == null)
{
writer.WriteRawValue(""); // This procudes "nothing"
}
else
{
writer.WriteValue(item);
}
}
writer.WriteEndArray();
}
}
像这样使用
Test t = new Test();
string json = JsonConvert.SerializeObject(t, new ObjectCollectionConverter());