【发布时间】:2018-06-26 18:50:07
【问题描述】:
public class MyClass
{
public byte[] Bytes{get;set;}
}
MyClass obj = new MyClass();
obj.Bytes = new byte[]{1,22,44,55};
string s_result = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
// my s_result looks like {"Bytes":"KQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}
我想要类似 "Bytes":"1,22,44,55" 的结果
我确实通过在类中再创建一个 int[] 属性来解决这个问题,例如
public class MyClass
{
[JsonIgnore]
public byte[] Bytes{get;set;}
public int[] MessageByte
{
get
{
if (this.Bytes == null)
return null;
int[] result = new int[this.Bytes.Length];
for (int i = 0; i < this.Bytes.Length; i++)
{
result[i] = this.Bytes[i];
}
return result;
}
}
}
有什么建议吗?
【问题讨论】:
-
According to the docs,默认情况下,一个byte[]被序列化为base64编码的String。您的解决方法似乎合理,但您可以轻松地制作一行 LINQ
标签: c# arrays json serialization json.net