2012-06-26 49 views
0

我有這樣的JSON響應:忽略定製兒童使用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>>(); 

...

我有一個exceiption,因爲值 「110」 是整數。我怎樣才能跳過這個值?

回答

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來忽略或選擇消息中任何位置的令牌。

當然,你可以玩這種方法(改變事情),具體取決於你期望在成功場景中返回什麼。

+0

什麼是你的代碼中的「解析」?在我的Visual Studio C#編輯器中,它無法解析。 – Jazimov