【发布时间】:2016-08-25 15:09:23
【问题描述】:
编码新手和 JSON 新手,我有这个 JSON 字符串:https://feeds.citibikenyc.com/stations/stations.json
现在我可以得到时间戳,但不能得到像站名这样的数据。
这是我的代理
public class BPNewYorkCityProxy
{
public async static Task<RootObject> GetNewYorkCity()
{
var http = new HttpClient();
var response = await http.GetAsync("https://feeds.citibikenyc.com/stations/stations.json");
var result = await response.Content.ReadAsStringAsync();
var serializer = new DataContractJsonSerializer(typeof(RootObject));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(result));
var data = (RootObject)serializer.ReadObject(ms);
return data;
}
}
[DataContract]
public class StationBeanList
{
[DataMember]
public int id { get; set; }
[DataMember]
public string stationName { get; set; }
[DataMember]
public int availableDocks { get; set; }
[DataMember]
public int totalDocks { get; set; }
[DataMember]
public double latitude { get; set; }
[DataMember]
public double longitude { get; set; }
[DataMember]
public string statusValue { get; set; }
[DataMember]
public int statusKey { get; set; }
[DataMember]
public int availableBikes { get; set; }
[DataMember]
public string stAddress1 { get; set; }
[DataMember]
public string stAddress2 { get; set; }
[DataMember]
public string city { get; set; }
[DataMember]
public string postalCode { get; set; }
[DataMember]
public string location { get; set; }
[DataMember]
public string altitude { get; set; }
[DataMember]
public bool testStation { get; set; }
[DataMember]
public string lastCommunicationTime { get; set; }
[DataMember]
public string landMark { get; set; }
}
[DataContract]
public class RootObject
{
[DataMember]
public string executionTime { get; set; }
[DataMember]
public List<StationBeanList> stationBeanList { get; set; }
}
这是我在 XAML 上的代码,如时间戳获取,但现在我想要更多,例如电台名称和可用位置。
private async void GetData_Click(object sender, RoutedEventArgs e)
{
RootObject nycParking = await BPNewYorkCityProxy.GetNewYorkCity();
// how to get a stationname .. my proxy creates a list, does it?...
//myStationName.Text =
// Well this works
myTimeStamp.Text = nycParking.executionTime.ToString();
}
如何做到这一点?提前谢谢
【问题讨论】:
-
你真的应该考虑使用不同的序列化程序。 Newtonsoft Json.Net 具有比 DataContractJsonSerializer 更好的性能和功能,并且不需要归因于每个单独的类和属性。更不用说它有一个更直观的 API。
标签: c# json xaml data-binding uwp