我正在尝试使用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;
}
答案 0 :(得分:22)
byte[]
是某种编码文本吗?如果是,请先解码,例如如果编码是UTF8:
public static Dictionary<String, Object> parse(byte[] json){
string jsonStr = Encoding.UTF8.GetString(json);
return JsonConvert.DeserializeObject<Dictionary<String, Object>>(jsonStr);
}
答案 1 :(得分:2)
要理解byte []中的内容,您应该指定编码并使用实际可以获取byte []的方法。
由于我不知道这种方法,这将是您的问题的解决方案 -
所以正确的方法是 -
public static Dictionary<String, Object> parse(byte[] json)
{
var reader = new StreamReader(new MemoryStream(json), Encoding.Default);
Dictionary<String, Object> values = new JsonSerializer().Deserialize<Dictionary<string, object>>(new JsonTextReader(reader));
return values;
}
另一种可能有助于解释deserilaize应该做什么的方法是 -
var jsonString = System.Text.Encoding.Default.GetString(json);
Dictionary<String, Object> values = JsonConvert.DeserializeObject<Dictionary<String, Object>>(jsonString);