1

我需要反序列化以下Json,根据Jsonlint.com,它是有效的,但我之前没有遇到过或者找不到类似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);

我现有的反序列化器与完整的 Json 流一起工作并遍历它,但在我的新 Json 中我需要反序列化,它只有 1 个项目,所以我不需要遍历它。

那么是否可以使用与我目前类似的方法来反序列化我的 Json 示例?

4

1 回答 1

2

我会说你试图使事情过于复杂。你所拥有的是一个完美形成的 json 字符串数组。如果我是你,我会先将其反序列化为 .net 数组,然后编写一个“映射器”函数来复制这些值:

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

等等。当然,这假设您知道 json 的顺序,但是如果您首先尝试这样做,那么您必须这样做!

于 2012-12-03T20:57:07.833 回答