讓我們的工作向後首先,這裏有你的類:
看着這些用心,因爲我有正確映射類型每個屬性,基於在你的json對象上。
public class RootObject
{
public Stations Stations { get; set; }
}
public class Stations
{
public List<Station> From { get; set; }
public List<Station> To { get; set; }
}
public class Station
{
public string Id { get; set; }
public string Name { get; set; }
public int? Score { get; set; }
public Coordinate Coordinate { get; set; }
public double? Distance { get; set; }
}
public struct Coordinate
{
public string Type { get; set; }
public double X { get; set; }
public double Y { get; set; }
}
這裏是你的類,構造,使您的期望RootObject
的樣本。
var data = new RootObject()
{
Stations = new Stations()
{
From = new List<Station>()
{
new Station()
{
Id = "008501120",
Name = "Lausanne",
Score = 101,
Coordinate = new Coordinate {Type = "WGS84", X = 46.516777, Y = 6.629095},
Distance = null
}
},
To = new List<Station>()
{
new Station()
{
Id = "000000178",
Name = "Fribourg",
Score = null,
Coordinate = new Coordinate {Type = "WGS84", X = 46.803272, Y = 7.151027},
Distance = null
}
}
}
};
var json = Newtonsoft.Json.JsonConvert.SerializeObject(data);
你得到的價值是這樣的:
{
"Stations": {
"From": [
{
"Id": "008501120",
"Name": "Lausanne",
"Score": 101,
"Coordinate": {
"Type": "WGS84",
"X": 46.516777,
"Y": 6.629095
},
"Distance": null
}
],
"To": [
{
"Id": "000000178",
"Name": "Fribourg",
"Score": null,
"Coordinate": {
"Type": "WGS84",
"X": 46.803272,
"Y": 7.151027
},
"Distance": null
}
]
}
}
這個工作在反向罰款。
var foo = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(json);
證明它的工作原理根據您的鏈接
http://transport.opendata.ch/v1/connections?from=lausanne&to=fribourg
以上,這裏都在行動
var httpWebRequest = (HttpWebRequest)WebRequest
.Create("http://transport.opendata.ch/v1/connections?from=lausanne&to=fribourg");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "GET";
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadLine();
var foo = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(result);
}
工作正常類。
你的錯誤消息
您得到的誤差:
無法反序列化當前JSON陣列(例如[1,2,3])轉換成類型「SmartTransportNatif.Stations ',因爲該類型需要一個JSON對象(例如{「name」:「value」})來正確反序列化。
這指向一個你甚至沒有在你的問題中顯示的類,它只是被錯誤地建模爲json。但是因爲它不是與你的問題一起提供的,所以上面的答案足以顯示出錯的地方。
答案很簡單:這個JSON是**無效**。 JSON應該代表一個對象或一個數組。 –
@YeldarKurmangaliyev這是一個長JSON的最終屬性 –
好的,我明白了。您需要發佈最小有效的JSON,以便每個人都可以重現此問題。你可以把整個JSON和刪除所有不必要的項目,但它應該是有效的。 –