0

有没有办法在Json.NET中设置 null 值的默认表示形式?更具体地说,数组中的空值。

给定班级

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。

4

1 回答 1

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());
于 2013-11-03T22:41:22.367 回答