如何构建良好的c#数据结构
我的目标是在业余时间开发一个基于()的定制搜索 我将搜索参数简化到最小 例如(只要如何构建良好的c#数据结构,c#,json,rest,restsharp,C#,Json,Rest,Restsharp,我的目标是在业余时间开发一个基于()的定制搜索 我将搜索参数简化到最小 例如(只要search\u id有效,您就可以尝试此操作): 当您首次访问并输入搜索参数时,将生成搜索id 这是我使用它作为输入JSON生成的简化数据结构: { "serviceVersion": "v1.0.0", "sortVariants": null, "companies": { "1007": { "name": "Eurolines Germany", "logoU
search\u id
有效,您就可以尝试此操作):
当您首次访问并输入搜索参数时,将生成搜索id
这是我使用它作为输入JSON生成的简化数据结构:
{
"serviceVersion": "v1.0.0",
"sortVariants": null,
"companies": {
"1007": {
"name": "Eurolines Germany",
"logoUrl": "http://cdn-goeuro.com/static_content/web/logos/{size}/eurolines_germany.png",
"id": "1007"
}
},
"outbounds": {
"3624107261930718525-38-flight-1-27": {
"companyId": "38",
"mode": "flight",
"duration": "873",
"outboundId": "3624107261930718525",
"journeyId": "27",
"departureTime": "2017-01-15T19:12:00.000+01:00",
"arrivalTime": "2017-01-16T09:45:00.000+01:00",
"stops": "1",
"price": 16209,
"updatedAt": "1",
"segments": [ 1344486303, 574447503, 689435565, 833161604 ],
"arrivalOvernightOffset": 1,
"overnightOffset": 1
}
},
"query": {
"roundTrip": false,
"airportToAirport": false,
"locationsOutsideEurope": false,
"searchId": "428558909",
"departurePosition": "377001",
"arrivalPosition": "398532",
"departureDate": "2017-01-15T00:00:00.000+01:00",
"passengers": {
"adults": 1,
"children": 0,
"infants": 0
},
"userInfo": {
"userLocale": "en",
"userCurrency": "EUR"
},
"searchModes": {
"bus": {
"status": "done",
"resultsQty": 13,
"filteredResultsQty": 13
},
"flight": {
"status": "done",
"resultsQty": 276,
"filteredResultsQty": 276
},
"train": {
"status": "done",
"resultsQty": 4,
"filteredResultsQty": 4
}
}
},
"itineraries": [
{ "outboundLegId": "3624107261930718525-38-flight-1-27" }
],
"segmentDetails": {
"1002857016": {
"type": "flight",
"departureTime": "2017-01-16T08:35:00.000+01:00",
"arrivalTime": "2017-01-16T12:05:00.000+02:00",
"departurePosition": "313870",
"arrivalPosition": "314920",
"duration": "150",
"company": "190",
"transportId": "ca6199",
"direction": "OUTBOUND",
"overnightOffset": 1,
"departureOvernightOffset": 1,
"arrivalOvernightOffset": 1
}
},
"positions": {
"2091737": {
"positionType": "busstation",
"name": "Warszawa, Warszawa Centralny",
"cityName": "Warsaw",
"latitude": 52.22782,
"longitude": 21.00224
}
},
"currencies": {
"EUR": {
"name": "Euro",
"symbol": "€"
}
}
}
来自的结果非常好,但另一方面,它会产生类似这样的结果
public class Outbounds
{
public __invalid_type__362410726193071852538Flight127 __invalid_name__3624107261930718525-38-flight-1-27 { get; set; }
}
我在这里看到两个问题:
\u无效的\u名称\u\u 3624107261930718525-38-flight-1-27
在c中不是有效的标识符#http://json2csharp.com/
):
static void Main()
{
var client=新的RestClient(“https://www.goeuro.com");
var request=new RestRequest(“/GoEuroAPI/rest/api/v5/results?&search_id=428558909”,Method.GET);
request.RequestFormat=DataFormat.Json;
//contentType:“应用程序/json;字符集=utf-8”,
var response=client.Execute(request.Data);
}
事实上,我找到了解决我的问题的现有解决方案(部分):
,它实际上是在node.js中编写的,但我需要c#,但是顺便说一下,这个示例不太管用(仅当您有一个现有的search_id
),最后我想从goeuro获得search_id
,而不用手动将它键入我的代码。
也许使用这个的原因是JSON格式改变了…mmh,这可能是什么…对于
的“outbounds”
使用字典
,沿着。对“细分详细信息”
、“头寸”
、“欧元”
等执行类似操作。
static void Main()
{
var client = new RestClient("https://www.goeuro.com");
var request = new RestRequest("/GoEuroAPI/rest/api/v5/results?&search_id=428558909", Method.GET);
request.RequestFormat = DataFormat.Json;
// contentType: "application/json; charset=utf-8",
var response = client.Execute<Response>(request).Data;
}