使用base64编码的字节[]编码,而不使用sbyte []编码。
byte[] bs = {100,101};
Newtonsoft.Json.JsonConvert.SerializeObject(bs);//"ZGU="
sbyte[] sbs = {100,101};
Newtonsoft.Json.JsonConvert.SerializeObject(sbs);//"[100,101]"
答案 0 :(得分:7)
这只是JSON.Net的工作方式,我怀疑大多数序列化程序都会这样做。检查documentation,其中明确指出byte[]
已序列化为base64编码的字符串。
所有其他数组都将按照您期望的方式处理,就像简单的JSON数组类型一样,其中元素根据数组类型的规则进行序列化。这意味着sbyte[]
将被序列化为整数数组。
答案 1 :(得分:1)
JSON.Net文档中的serialization guide显示sbyte[]
数组没有序列化规则。但是,有sbyte
条目。 sbyte
将被序列化为int
。
byte[]
数组将被序列化为base64
字符串,因为它在指南中已明确定义,并且很方便。
由于序列化指南中没有sbyte[]
规则,因此该数组将像其他任何数组一样被对待,并且其成员将根据该指南进行序列化。因此,由于sbyte[]
序列化为int[]
,sbyte
被序列化为int
。
请参见下图: