使用Json.Net将字节数组解析为json

时间:2013-12-24 18:18:51

标签: c# json

我正在尝试使用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;
}

2 个答案:

答案 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);