JSON.NET customizing the serialization to exclude a property name

回眸只為那壹抹淺笑 提交于 2019-12-07 06:59:28

Found a way to get around this by creating a custom converter. The below code produces the Json result I need.

public class GridJsonConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return true; //TODO: more logic check the type before the conversion..
    }

    public override void WriteJson(JsonWriter writer, 
       object value, JsonSerializer serializer)
    {
        var rows = (List<Row>)value;

        writer.WriteStartObject();
            writer.WritePropertyName("data");
                writer.WriteStartArray();

        foreach (var row in rows)
        {
            writer.WriteStartObject();
            var cells = row.Cells;

            foreach (var cell in cells)
            {
                writer.WritePropertyName(cell.Key);
                writer.WriteValue(cell.Value);    
            }

            writer.WriteEndObject();
        }

        writer.Flush();
    }

    public override object ReadJson(JsonReader reader, Type objectType, 
       object existingValue, JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }
}

//Usage example:

  string serializeObject = JsonConvert.SerializeObject
 (someData, Formatting.Indented,   new GridJsonConverter());
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!