私はjson.net(NewtonsoftのJsonSerializer)を使用しています。次の要件を満たすためにシリアル化をカスタマイズする必要があります。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" });
がにシリアライズする必要があります。プロパティ名が "名前" にシリアライズしますが、キーアイテム1は、 "アイテム1" にシリアライズすること
{
name: "Product1",
items : {
"Item1": {
description : "Lorem Ipsum"
}
}
}
予告。
私はプロパティ名をシリアル化するために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);
}
}
これは違反ではありません。これは、データの直列化を扱うときに必要なマッピングを提供します。これは、C#の変数名とJSONに限定されない基になるシリアル化形式の不一致が原因です。 – Metro
マッピングを決定するために使用できる規則や規則がある場合、DRY – Liero
に違反しています。DRYの原則は、「すべての知識は、システム内で単一で明白で信頼できる表現でなければなりません。論理的に関連している要素はすべて予測可能かつ一様に変化し、したがって同期している」と述べている。 – Liero