Это довольно просто, особенно с пакетами, доступными, чтобы упростить большую часть работы.Пакет Nuget System.Net.Http
будет содержать пакеты, необходимые для создания JSON HttpClient
до Get()
из Интернета.Я рекомендую Newtonsoft.Json
проанализировать JSON в объекте C #.И затем, имея объект, вам просто нужно установить DataGrid.ItemSource
как массив объектов любого типа, чтобы он мог генерировать столбцы.
Простой пример:
Сначала вы должны определитьпростое объектное представление ваших данных JSON.Например, если у вас были следующие данные:
[
{
"Name":"Test",
"Data": ["Item1","Item2"]
},
{
"Name":"Test 2",
"Data": ["Item3","Item4"]
}
]
Вы должны создать эквивалентное представление C #.По сути, это список объектов:
public class OuterObject : List<InnerObject> {}
Внутренний объект выглядит следующим образом:
public class InnerObject {
public string Name { get; set; }
public List<string> Data { get; set; }
}
Определив объекты, вы можете сделать что-то вроде:
HttpClient client = new HttpClient { BaseAddress = new Uri("ADDRESS") };
var json = await client.GetAsync("/ENDPOINT");
JsonSerializer serializer = JsonSerializer.CreateDefault();
using (StringReader reader = new StringReader(json))
{
using (JsonTextReader jsonReader = new JsonTextReader(reader))
{
var result = serializer.Deserialize<OuterObject>(jsonReader);
}
}
Затем, чтобы получить доступ к данным в вашей программе, вы можете получить к ним следующий доступ:
string name = result[0].Name;
или установить значение DataGrid's
ItemSource
, чтобы данные волшебным образом отображались.
grid1.ItemSource = result;
Пока в результате получается массив элементов, он будет создавать по строке для каждого элемента.Вы можете указать, какие элементы показывать, но это делается путем изменения DataGrid.Columns
определений и настроек DataGrid.AutogenerateColumns = false
РЕДАКТИРОВАТЬ: с вашими данными и моделями
//Just a small change to the Collection
public class BrandsCollection {
private ObservableCollection<Brands> _records;
public ObservableCollection<Brands> records { get => _records; set => _records= value; }
}
И для анализаdata ...
JsonSerializer serializer = JsonSerializer.CreateDefault();
using (StringReader reader = new StringReader(json))
{
using (JsonTextReader jsonReader = new JsonTextReader(reader))
{
var result = serializer.Deserialize<BrandsCollection>(jsonReader);
}
}
Вы должны помнить, чтобы использовать те же имена, что и метки json, либо использовать атрибуты Json.Для получения дополнительной информации об этом вы можете перейти к официальной документации Newtonsoft.Json