如何反序列化仅包含值的JSON数组?

时间:2015-03-12 02:43:30

标签: c# json json.net

我从网络功能获得此结果。

["767,20150221122715,121053103,14573465,1,7,302",
"767,20150221122756,121053165,14573375,1,0,302",
"767,20150221122840,121053498,14572841,1,12,124"]

通常Json有PropertyName:Value 但是这有一个字符串数组,每个字符串都有以逗号分隔的值。我知道每个价值位置意味着什么。

我尝试使用JsonConvert.DeserializeObject但无法使其正常工作。

string deserializedProduct = JsonConvert.DeserializeObject<string>(json);
//and
List<string> deserializedProduct = JsonConvert.DeserializeObject<string>(json);

我可以解析字符串进行拆分,但我想知道是否有一种简单的方法。

2 个答案:

答案 0 :(得分:3)

要回答您的问题,根据http://json.org/,它是一个有效的JSON值(字符串数组)。

根据您应该使用的this stack overflow question对其进行反序列化 JsonConvert.DeserializeObject<List<string>>(json); 转换它

答案 1 :(得分:2)

DeserializeObject<T>()方法的泛型参数是您希望反序列化器反序列化的类型。您的json字符串表示字符串数组,因此您应该反序列化为字符串集合(通常为List<string>)。

var values = JsonConvert.DeserializeObject<List<string>>(json);

但是,没有必要指定类型。有一个返回object的非泛型重载。它将(在这种情况下)返回具有适当值的JArray实例。

object values = JsonConvert.Deserialize(json);

但是,如果可能的话,最好返回更具体的类型。为了使其更加通用,您可以将JToken用于泛型类型,或者更具体地说,JArray

var values = JsonConvert.Deserialize<JToken>(json); // good
var values = JsonConvert.Deserialize<JArray>(json); // better in this case