如何反序列化仅包含值的 JSON 数组?
How do I deserialize a JSON array that contains only values?
我从网络函数中得到这个结果。
["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);
我可以解析字符串进行拆分,但我想知道是否有简单的方法。
为了回答您的问题,根据 http://json.org/,它是一个有效的 JSON 值(字符串数组)。
要根据 this stack overflow question 反序列化它,你应该使用
JsonConvert.DeserializeObject<List<string>>(json);
转换它
DeserializeObject<T>()
方法的通用参数是您希望反序列化器反序列化的类型。您的 json 字符串表示一个字符串数组,因此您应该反序列化为一个字符串集合(通常为 List<string>
)。
var values = JsonConvert.DeserializeObject<List<string>>(json);
但是,没有必要指定类型。存在 returns object
的非泛型重载。它将(在这种情况下)return 具有适当值的 JArray
的实例。
object values = JsonConvert.Deserialize(json);
不过,如果可能的话,return 更具体的类型会更好。为了使其更通用,您可以使用 JToken
作为泛型,或者更具体地说,JArray
.
var values = JsonConvert.Deserialize<JToken>(json); // good
var values = JsonConvert.Deserialize<JArray>(json); // better in this case
我从网络函数中得到这个结果。
["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);
我可以解析字符串进行拆分,但我想知道是否有简单的方法。
为了回答您的问题,根据 http://json.org/,它是一个有效的 JSON 值(字符串数组)。
要根据 this stack overflow question 反序列化它,你应该使用
JsonConvert.DeserializeObject<List<string>>(json);
转换它
DeserializeObject<T>()
方法的通用参数是您希望反序列化器反序列化的类型。您的 json 字符串表示一个字符串数组,因此您应该反序列化为一个字符串集合(通常为 List<string>
)。
var values = JsonConvert.DeserializeObject<List<string>>(json);
但是,没有必要指定类型。存在 returns object
的非泛型重载。它将(在这种情况下)return 具有适当值的 JArray
的实例。
object values = JsonConvert.Deserialize(json);
不过,如果可能的话,return 更具体的类型会更好。为了使其更通用,您可以使用 JToken
作为泛型,或者更具体地说,JArray
.
var values = JsonConvert.Deserialize<JToken>(json); // good
var values = JsonConvert.Deserialize<JArray>(json); // better in this case