我有这样的json回复:
{"response_values":[110,{"id":14753,"name":"piter"},{"id":14753,"name":"rabbit"}]}
我有一个简单的课程
public class Class1
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
}
当我尝试使用此方法将json转换为对象列表时:
public T Cast<T>(string json)
{
var result = default(T);
var jsonObject = JObject.Parse(json);
if (jsonObject != null)
{
var responseToken = jsonObject["response"];
result = responseToken.ToObject<T>();
}
return result;
}
像这样
...
var jsonString = GetJson();
var items = Cast<List<Class1>>();
...
我有一个例外,因为值“110”是整数。我怎么能跳过这个值?
答案 0 :(得分:1)
如果您希望忽略的值始终位于开头,则始终具有此选项:
if (jsonObject != null)
{
var responseToken = parsed["response_values"].SkipWhile(j => j.Type != JTokenType.Object);
if (responseToken.Count() > 0) result = responseToken.ToObject<T>();
}
如果它始终是第一个值,您可能更愿意使用Skip(1)
而不是SkipWhile
。或者,您可以使用Where
忽略或选择邮件中的任何位置。
当然,你可以使用这种方法(改变一些事情),具体取决于你期望在成功场景中返回的内容。