2014-10-08 45 views
0

我有一個問題,我似乎無法找到關於如何解決它的谷歌線索。我試圖解析一個RESTful-api服務的響應。試圖解析一個RESTful api響應

[{"account_id":"5401585","history":"84967869|2|03\/30\/2012,84972342|2|03\/30\/2012,85312563|2|04\/02\/2  012,85314831|2|04\/02\/2012,85318847|2|04\/02\/2012,85435388|2|04\/03\/2012,100244102|2|09\/09\/2012,100  245865|2|09\/09\/2012,100249440|2|09\/09\/2012,100251434|2|09\/09\/2012"}]' 

我不明白我該如何將這個響應放到列表中,就像我的模型所說的那樣。

基本上,我想要把每一行除以「,」加到列表中。

我的代碼看起來是這樣的:

public class MatchHistoryParser 
     { 
     public RootObject get() 
     { 
     using (var webClient = new System.Net.WebClient()) 
     { 

      string URL2 =  @"api url"; 
      var json = webClient.DownloadString(URL2); 
      RootObject match = JsonConvert.DeserializeObject<RootObject>(json); 

      return match; 
     } 
    } 
} 
public class RootObject 
{ 
    public string account_id { get; set; } 
    public string history { get; set; } 
    public string win_loss_history { get; set; } 
} 

拋出錯誤:」 其他信息:無法當前JSON陣列(例如[1,2,3])反序列化爲類型 'HoNEnemy.BL.RootObject'因爲該類型需要JSON對象(例如{「name」:「value」})才能正確反序列化。「

+1

你需要一個像JSON.NET http://james.newtonking.com/json或Microsoft內置的JSON解析器。或者從JSON中生成C#,以瞭解JSON是什麼:http://json2csharp.com/ – MatthewMartin 2014-10-08 14:38:06

+0

該字符串的內容對JavaScript不透明。一旦你在一個字符串中,這是一個特別的格式。 (這意味着歷史) – MatthewMartin 2014-10-08 14:39:32

+0

歷史應該是一個字符串。 public class RootObject { public string account_id {get;組; } public string history {get;組; } } – MatthewMartin 2014-10-08 14:40:12

回答

1

你得到一個列表,而不是一個對象,所以你應該分析這樣

RootObject rootObject; 
var matches = JsonConvert.DeserializeObject<IList<RootObject>>(json); 

然後

if(matches.Any()) 
{ 
    rootObject = matches[0]; 
} 

,然後創建一個方法,以歷史字符串分割成一個列表,並使用那不是財產

2

使用JSON.Net反序列化您的響應(示例provided on this website),然後在歷史記錄字段上使用Split()和ToList()。

如果您不想使用外部庫,您可以用JavaScriptSerializer替換JSON.Net。

+0

這是我的代碼: - 公共匹配的get(){ 使用 (VAR的WebClient =新System.Net.WebClient()){ 串URL2 = @ 「我的API URL」; var json = webClient.DownloadString(URL2); 匹配匹配= JsonConvert.DeserializeObject (json); 返回匹配; } } 這會拋出一個關於響應格式的錯誤 – user3581054 2014-10-08 15:09:13

+0

那是因爲您的歷史屬性應該是一個字符串而不是字符串列表......您發佈的JSON不是字符串數組。 – BenjaminPaul 2014-10-08 15:21:22

+0

我明白了,看看我上面的修改 – user3581054 2014-10-08 15:25:39