C# Json.Net-序列化;压缩";?
在这里,创建具有长属性名称的POCO非常常见,例如“WarnIfAnyAmountInDebtLongerThan30Days”,一些列表中有多达1k个项目,导致1MB Json被缓存/传输…C# Json.Net-序列化;压缩";?,c#,.net,json,C#,.net,Json,在这里,创建具有长属性名称的POCO非常常见,例如“WarnIfAnyAmountInDebtLongerThan30Days”,一些列表中有多达1k个项目,导致1MB Json被缓存/传输… 我想知道是否有一种方法可以告诉JSON.Net,不要用那个巨大的属性名进行序列化,而是将它压缩为“P1”(例如),创建某种内部字典以便以后反序列化 这可能吗?或者我必须去计划B,创建另一个具有减少属性名称的POCO,并使用映射器返回 编辑1: 创建别名不是我想要的,因为我有数千个Java脚本和其他移动部分
我想知道是否有一种方法可以告诉JSON.Net,不要用那个巨大的属性名进行序列化,而是将它压缩为“P1”(例如),创建某种内部字典以便以后反序列化 这可能吗?或者我必须去计划B,创建另一个具有减少属性名称的POCO,并使用映射器返回 编辑1:
创建别名不是我想要的,因为我有数千个Java脚本和其他移动部分,这取决于属性名。。。我只想在序列化缓存时“压缩”它 取决于反序列化端的使用情况。您可以尝试BSon,它是一种二进制JSon,允许您减少传输的数据量
您可以使用
JsonProperty
属性装饰POCO,并指定应在Json中使用的字段名
[JsonProperty("S1")]
public string SomeReallyVeryLongName {get; set;}
}
文件:
它必须在所有POCO上完成,但它是一次性的、一致的、可预测的和机器可读的
如果你有很多课要布置,您可以使用类似或的内容来为您执行此操作。对于每个序列化程序,您可以在要序列化的成员顶部放置一个别名,指示输出格式中的名称。@HimBromBeere请选中编辑1I,因为您可以制作一些
字符串。替换搜索类似于\S+:
的内容,例如regex和用新名称替换它。但我想这样做有点难看。。。不管怎样,我想知道你想如何从如此操纵的JSON中获得正确的数据。您必须能够以任何方式还原此机制,不是吗?老实说,如果您担心有效负载的大小,请不要使用使用反射的序列化技术,并以二进制序列化的老式方式进行序列化。这个当代的有效负载概念,包括模式/属性名称和有效负载,只是为了人类的利益,实在是太冗长了;效率低下而且愚蠢。我确实。。。最终的结果其实是最糟糕的!BSon不会替换属性名。当然不会,我只是希望它能稍微降低负载。