Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Json.Net-序列化;压缩";?_C#_.net_Json - Fatal编程技术网

C# Json.Net-序列化;压缩";?

C# Json.Net-序列化;压缩";?,c#,.net,json,C#,.net,Json,在这里,创建具有长属性名称的POCO非常常见,例如“WarnIfAnyAmountInDebtLongerThan30Days”,一些列表中有多达1k个项目,导致1MB Json被缓存/传输… 我想知道是否有一种方法可以告诉JSON.Net,不要用那个巨大的属性名进行序列化,而是将它压缩为“P1”(例如),创建某种内部字典以便以后反序列化 这可能吗?或者我必须去计划B,创建另一个具有减少属性名称的POCO,并使用映射器返回 编辑1: 创建别名不是我想要的,因为我有数千个Java脚本和其他移动部分

在这里,创建具有长属性名称的POCO非常常见,例如“WarnIfAnyAmountInDebtLongerThan30Days”,一些列表中有多达1k个项目,导致1MB Json被缓存/传输…
我想知道是否有一种方法可以告诉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不会替换属性名。当然不会,我只是希望它能稍微降低负载。