Впервые работа с JSON в C#. Я строю приложение Blazor, используя данные AMADEUS API (поиск полетов), и я не могу, казалось, могу использовать объект JSON в компоненте Blazor. < /P>
Ошибка, которую я получаю: < /p>
Компонент verending: < /p>
System.collections.generic.list`1 [flights.models.rootobject] < /p>
< /blockquote>
, который, я думаю, может быть потому, что я не строю свои классы C# правильно.{
"data": [
{
"type": "flight-destination",
"origin": "XOC",
"destination": "YJB",
"departureDate": "2025-08-19",
"returnDate": "2025-08-21",
"price": {
"total": "60.0"
},
"links": {
"flightDates": "https://test.api.amadeus.com/v1/shoppin ... ESTINATION",
"flightOffers": "https://test.api.amadeus.com/v2/shoppin ... ESTINATION"
}
},
{
"type": "flight-destination",
"origin": "MAD",
"destination": "AUH",
"departureDate": "2025-07-22",
"returnDate": "2025-07-28",
"price": {
"total": "679.07"
},
"links": {
"flightDates": "https://test.api.amadeus.com/v1/shoppin ... ESTINATION",
"flightOffers": "https://test.api.amadeus.com/v2/shoppin ... ESTINATION"
}
}
],
"dictionaries": {
"currencies": {
"EUR": "Euro"
},
"locations": {
"MXP": {
"subType": "AIRPORT",
"detailedName": "MALPENSA"
},
"AMS": {
"subType": "AIRPORT",
"detailedName": "SCHIPHOL AIRPORT"
}
}
},
"meta": {
"currency": "EUR",
"links": {
"self": "https://test.api.amadeus.com/v1/shoppin ... ESTINATION"
},
"defaults": {
"departureDate": "2025-07-16,2026-01-10",
"oneWay": false,
"duration": "1,15",
"nonStop": false,
"viewBy": "DESTINATION"
}
},
"warnings": []
}
< /code>
Я затем попытался отразить мои классы C#, чтобы соответствовать структуре JSON: < /p>
namespace Flights.Models
{
public class RootObject
{
public Data[] data { get; set; }
public Dictionaries dictionaries { get; set; }
public Meta meta { get; set; }
public object[] warnings { get; set; }
}
public class Data
{
public string type { get; set; }
public string origin { get; set; }
public string destination { get; set; }
public string departureDate { get; set; }
public string returnDate { get; set; }
public Price price { get; set; }
public Links links { get; set; }
}
public class Price
{
public string total { get; set; }
}
public class Links
{
public string flightDates { get; set; }
public string flightOffers { get; set; }
}
public class Dictionaries
{
public Currencies currencies { get; set; }
}
public class Currencies
{
public string EUR { get; set; }
}
public class Meta
{
public string currency { get; set; }
public Links1 links { get; set; }
public Defaults defaults { get; set; }
}
public class Links1
{
public string self { get; set; }
}
public class Defaults
{
public string departureDate { get; set; }
public bool oneWay { get; set; }
public string duration { get; set; }
public bool nonStop { get; set; }
public string viewBy { get; set; }
}
}
< /code>
и метод, который я использую для получения данных в поле назначения, чтобы я мог передать это в детский компонент: < /p>
private List destinations;
private async Task GetMostTravelledDestinations(string accessToken)
{
var request = new HttpRequestMessage(HttpMethod.Get, "https://test.api.amadeus.com/v1/shoppin ... origin=MAD");
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
request.Headers.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
var response = await Http.SendAsync(request);
if (response.IsSuccessStatusCode)
{
var json = await response.Content.ReadAsStringAsync();
var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };
var parsed = JsonSerializer.Deserialize(json, options);
if (parsed != null)
{
foreach (var rootObject in parsed)
{
Console.WriteLine($"{rootObject.data}");
}
destinations = parsed;
using var doc = JsonDocument.Parse(json);
var root = doc.RootElement;
if (root.TryGetProperty("data", out var dataArray))
{
Console.WriteLine($"Data contains {dataArray.GetArrayLength()} items.");
}
else
{
Console.WriteLine("No 'data' property found.");
}
return parsed;
}
}
return new List();
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... or-compone
Преобразование JSON из API CALL в классы C# и передача между компонентами Blazor ⇐ C#
Место общения программистов C#
1752692583
Anonymous
Впервые работа с JSON в C#. Я строю приложение Blazor, используя данные AMADEUS API (поиск полетов), и я не могу, казалось, могу использовать объект JSON в компоненте Blazor. < /P>
Ошибка, которую я получаю: < /p>
Компонент verending: < /p>
System.collections.generic.list`1 [flights.models.rootobject] < /p>
< /blockquote>
, который, я думаю, может быть потому, что я не строю свои классы C# правильно.{
"data": [
{
"type": "flight-destination",
"origin": "XOC",
"destination": "YJB",
"departureDate": "2025-08-19",
"returnDate": "2025-08-21",
"price": {
"total": "60.0"
},
"links": {
"flightDates": "https://test.api.amadeus.com/v1/shopping/flight-dates?origin=XOC&destination=YJB&departureDate=2025-08-19,2025-08-21&oneWay=false&nonStop=false&viewBy=DESTINATION",
"flightOffers": "https://test.api.amadeus.com/v2/shopping/flight-offers?originLocationCode=XOC&destinationLocationCode=YJB&departureDate=2025-08-19&returnDate=2025-08-21&adults=1&nonStop=false&viewBy=DESTINATION"
}
},
{
"type": "flight-destination",
"origin": "MAD",
"destination": "AUH",
"departureDate": "2025-07-22",
"returnDate": "2025-07-28",
"price": {
"total": "679.07"
},
"links": {
"flightDates": "https://test.api.amadeus.com/v1/shopping/flight-dates?origin=MAD&destination=AUH&departureDate=2025-07-22,2025-07-28&oneWay=false&nonStop=false&viewBy=DESTINATION",
"flightOffers": "https://test.api.amadeus.com/v2/shopping/flight-offers?originLocationCode=MAD&destinationLocationCode=AUH&departureDate=2025-07-22&returnDate=2025-07-28&adults=1&nonStop=false&viewBy=DESTINATION"
}
}
],
"dictionaries": {
"currencies": {
"EUR": "Euro"
},
"locations": {
"MXP": {
"subType": "AIRPORT",
"detailedName": "MALPENSA"
},
"AMS": {
"subType": "AIRPORT",
"detailedName": "SCHIPHOL AIRPORT"
}
}
},
"meta": {
"currency": "EUR",
"links": {
"self": "https://test.api.amadeus.com/v1/shopping/flight-destinations?origin=MAD&departureDate=2025-07-16,2026-01-10&oneWay=false&nonStop=false&viewBy=DESTINATION"
},
"defaults": {
"departureDate": "2025-07-16,2026-01-10",
"oneWay": false,
"duration": "1,15",
"nonStop": false,
"viewBy": "DESTINATION"
}
},
"warnings": []
}
< /code>
Я затем попытался отразить мои классы C#, чтобы соответствовать структуре JSON: < /p>
namespace Flights.Models
{
public class RootObject
{
public Data[] data { get; set; }
public Dictionaries dictionaries { get; set; }
public Meta meta { get; set; }
public object[] warnings { get; set; }
}
public class Data
{
public string type { get; set; }
public string origin { get; set; }
public string destination { get; set; }
public string departureDate { get; set; }
public string returnDate { get; set; }
public Price price { get; set; }
public Links links { get; set; }
}
public class Price
{
public string total { get; set; }
}
public class Links
{
public string flightDates { get; set; }
public string flightOffers { get; set; }
}
public class Dictionaries
{
public Currencies currencies { get; set; }
}
public class Currencies
{
public string EUR { get; set; }
}
public class Meta
{
public string currency { get; set; }
public Links1 links { get; set; }
public Defaults defaults { get; set; }
}
public class Links1
{
public string self { get; set; }
}
public class Defaults
{
public string departureDate { get; set; }
public bool oneWay { get; set; }
public string duration { get; set; }
public bool nonStop { get; set; }
public string viewBy { get; set; }
}
}
< /code>
и метод, который я использую для получения данных в поле назначения, чтобы я мог передать это в детский компонент: < /p>
private List destinations;
private async Task GetMostTravelledDestinations(string accessToken)
{
var request = new HttpRequestMessage(HttpMethod.Get, "https://test.api.amadeus.com/v1/shopping/flight-destinations?origin=MAD");
request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);
request.Headers.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
var response = await Http.SendAsync(request);
if (response.IsSuccessStatusCode)
{
var json = await response.Content.ReadAsStringAsync();
var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };
var parsed = JsonSerializer.Deserialize(json, options);
if (parsed != null)
{
foreach (var rootObject in parsed)
{
Console.WriteLine($"{rootObject.data}");
}
destinations = parsed;
using var doc = JsonDocument.Parse(json);
var root = doc.RootElement;
if (root.TryGetProperty("data", out var dataArray))
{
Console.WriteLine($"Data contains {dataArray.GetArrayLength()} items.");
}
else
{
Console.WriteLine("No 'data' property found.");
}
return parsed;
}
}
return new List();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79702341/converting-json-from-api-call-to-c-sharp-classes-and-pass-between-blazor-compone[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия