我正在尝试使用Json.Net 解析byte[]数组,Dictionary<String,Object>但没有成功
其实我对它的可能性有疑问.那有可能吗?与这个图书馆或任何其他图书馆?
这是我尝试过但DeserializeObject除了字符串作为参数afaik
public static Dictionary<String, Object> parse(byte[] json){
Dictionary<String, Object> values = JsonConvert.DeserializeObject<Dictionary<String, Object>>(json);
return values;
}
Run Code Online (Sandbox Code Playgroud) 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="}
Run Code Online (Sandbox Code Playgroud)
我想要像 "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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
有什么建议 ?
使用 Newton.Json 进行 Json 序列化。要应用什么 JsonSerializerSettings ,当我必须将具有属性的对象 Json 序列化为字节数组,然后以十六进制格式显示字节数组时..
例如
class A
{
public int X {get;set;}
public byte[] Y {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
当我将 A 序列化为 json 时,我没有得到 Y 的值,因为我已经设置了 ... byte[] 的输出应该是十六进制的
我想将我的模型转换为 json,它有一个 byte[] 数组,在转换为 json 时该数组会转换为 base64 字符串。我不想将 byte[] 数组转换为字符串格式。
\n这是我尝试过的
\n MyModel myObject = new MyModel\n {\n Id = 1, \n Data = new byte[] { 0x01, 0x02, 0x03 }\n };\n string json = JsonSerializer.Serialize(myObject, options);\nRun Code Online (Sandbox Code Playgroud)\n\n我想要输出为{"Id":[1],"Data":[1,2,3]}.
编辑: \n我在 powershell 脚本中有上面的代码,它的作用相同
\n$CertificateJsonString = ConvertTo-Json $CertificateVaultObject -Compress\n$CertificateSecureString = ConvertTo-SecureString -String $CertificateJsonString -AsPlainText \xe2\x80\x93Force\nRun Code Online (Sandbox Code Playgroud)\n