Figured it out. I had to implement a custom JsonConverter. As others have said, this will not lead to valid / standard 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("");
}
else
{
writer.WriteValue(item);
}
}
writer.WriteEndArray();
}
}
Use it like this:
Test t = new Test();
string json = JsonConvert.SerializeObject(t, new ObjectCollectionConverter());
Flunx source
share