Json.Net - 序列化“压缩”?

时间:2017-01-19 12:25:21

标签: c# .net json

在这里,创建具有长属性名称的POCO非常常见,例如“WarnIfAnyAmountInDebtLongerThan30Days”,并且一些列表最多有1k项,这导致1MB Json被缓存/转移...
我想知道是否有办法告诉JSON.Net,而不是使用那个巨大的属性名称进行序列化,将其压缩为“P1”(例如),创建某种内部字典以供以后反序列化...

这可能吗?或者我是否必须计划B并创建另一个具有减少的属性名称的POCO并使用映射器来回...

编辑1:
创建一个别名不是我想要的,因为我有成千上万的javascripts和其他移动部分,具体取决于该属性名称......我只想在序列化缓存时“压缩”它!

2 个答案:

答案 0 :(得分:0)

取决于您在反序列化方面的用法。您可以尝试BSon这是一个二进制JSon,允许您减少传输的数据量......

http://www.newtonsoft.com/json/help/html/SerializeToBson.htm

答案 1 :(得分:0)

您可以使用JsonProperty属性装饰POCO,并指定Json中应使用的字段名称...

    [JsonProperty("S1")]
    public string SomeReallyVeryLongName {get; set;}
}

文档:https://www.newtonsoft.com/json/help/html/JsonPropertyName.htm

这必须在您所有的POCO上完成,但这是一次性的,一致的,可预测的和机器可读的。

如果要装饰的类很多,则可以使用FodyPostSharp之类的东西来代替。