2012-12-03 87 views
1

我需要反序列化下面的Json,根據Jsonlint.com是有效的,但是我之前沒有遇到過,或者找不到類似Json的例子以及如何處理它?Json沒有名稱字段的反序列化

[1,"Bellegrove/Sherwood ","76705","486","Bexleyheath Ctr",1354565507000] 

我現在的系統是這樣的:

數據類:

[DataContract] 
public class TFLCollection 
{ [DataMember(Name = "arrivals")] 
    public IEnumerable<TFLB> TFLB { get; set; } 
} 
[DataContract] 

public class TFLB 
{ 
    [DataMember] 
    public string routeName { get; set; } 
    [DataMember]  
    public string destination { get; set; } 
    [DataMember]  
    public string estimatedWait { get; set; } 
} 

解串器:

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(TFLCollection)); 

       using (var stream = new MemoryStream(Encoding.Unicode.GetBytes(result))) 
       {  var buses = (TFLCollection)serializer.ReadObject(stream); 
       foreach (var bus in buses.TFLBuses)  
        { 
         StopFeed _item = new StopFeed(); 

         _item.Route = bus.routeName; 
          _item.Direction = bus.destination; 
          _item.Time = bus.estimatedWait; 

          listBox1.Items.Add(_item); 

我exsiting解串器通過其與完整JSON流和迭代工作,但在我新的Json中,我需要反序列化,它只有1個項目,所以我不需要迭代它。

那麼是否有可能使用類似的方法反序列化我的Json示例?

+0

不用說,我會說特定的JSON字符串會反序列化爲'IEnumerable '。這在強類型語言中不是很有用。 – Bobson

+0

它是有效的JSON - 它是一個字符串和數字的數組。 –

回答

2

我會說你試圖過分複雜的事情。你有什麼是一個完美的json字符串數組。如果我是你,我會反序列化到.NET陣列的第一,然後寫一個「映射」功能在整個值複製:

public TFLB BusRouteMapper(string[] input) 
{ 
    return new TFLB { 
     Route = input[x], 
     Direction = input[y], 
    }; 
} 

等。當然,這假定你知道你的json將會進入什麼樣的順序,但是如果你首先嚐試了這一點,那麼你必須這樣做!

相關問題