Я использую json.net(Newtonsoft JsonSerializer). Мне нужно настроить сериализацию, чтобы соответствовать следующим требованиям:
- Имена свойств должны начинаться с строчной буквы.
- Словарь должен быть сериализован в jsonp, где ключи будут использоваться для имен свойств. Правило LowerCase не применяется для ключей словаря.
например:
var product = new Product();
procuct.Name = "Product1";
product.Items = new Dictionary<string, Item>();
product.Items.Add("Item1", new Item { Description="Lorem Ipsum" });
должен быть сериализован в:
{
name: "Product1",
items : {
"Item1": {
description : "Lorem Ipsum"
}
}
}
обратите внимание, что имя свойства сериализуется в "имя", но ключ Item1 сериализуется в "Item1";
Я попытался создать CustomJsonWriter для сериализации имен свойств, но он также меняет ключи.
public class CustomJsonWriter : JsonTextWriter
{
public CustomJsonWriter(TextWriter writer) : base(writer)
{
}
public override void WritePropertyName(string name, bool escape)
{
if (name != "$type")
{
name = name.ToCamelCase();
}
base.WritePropertyName(name, escape);
}
}