Столкнулся с такой проблемой. Требовалось вывести на datagridview список всех заявок (из json) вывел я их с помощью Newthonjson. создал список и передал его как ресурс для datagridview. проблема в том что ответ состоит из объекта в котором есть другой объект выглядит примерно так:
[
{
"orderedBy": {
"name": "Имя заказчика",
"_id": "60a61e6656403833a40f73ee"
},
"takenBy": {
"name": "Имя принявшего заказ",
"_id": "60a7b663288d253d401592b0"
},
"takenAt": "2021-05-21",
"_id": "60a7b24e1f32040990c37572",
"status": "in progress",
"description": "test order",
"ordered_At": "2021-05-21",
"__v": 0
},
{
"orderedBy": {
"name": "Имя",
"_id": "60a61e6656403833a40f73ee"
},
"takenAt": null,
"_id": "60a7b2892d3d3c2c500abaf0",
"description": "test order",
"status": "created",
"ordered_At": "2021-05-21",
"__v": 0
},
{
"orderedBy": {
"name": "Имя",
"_id": "60a61e6656403833a40f73ee"
},
"takenAt": null,
"_id": "60a7b28e2d3d3c2c500abaf1",
"description": "test order2",
"status": "created",
"ordered_At": "2021-05-21",
"__v": 0
},
{
"orderedBy": {
"name": "Имя",
"_id": "60a61e6656403833a40f73ee"
},
"takenBy": {
"name": "Имя",
"_id": "60a7b663288d253d401592b0"
},
"takenAt": "2021-05-21",
"_id": "60a7b2922d3d3c2c500abaf2",
"description": "test order3",
"status": "done",
"ordered_At": "2021-05-21T13:16:02.411Z",
"__v": 0
},
{
"orderedBy": {
"name": "Имя",
"_id": "60a61e6656403833a40f73ee"
},
"takenAt": null,
"_id": "60a88ffbc9b24a0015db80ef",
"description": "this is description of order",
"status": "created",
"ordered_At": "2021-05-22",
"__v": 0
}
]
Заполняю datagrid таким способом:
private void FillDatagrvw(string json)
{
dynamic job= new List<OrderResponse>();
try
{
job = JsonConvert.DeserializeObject<List<OrderResponse>>(json);
}
catch (Exception ext){
MessageBox.Show(ext.ToString());
}
if (job != null)
{
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = job;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
}
}
Поля класса OrderResponse:
public class OrderResponse {
public OrderBy orderedBy { get; set; }
public TakenBy takenBy { get; set; }
public string ordered_At { get; set; }
public string takenAt { get; set; }
public string status { get; set; }
public string _id { get; set; }
public string description { get; set; }
}
Помогите получить значения orderedBy и takenBy. Заранее спасибо
[ ... ], у вас он один. Далее, почемуdynamic job=? ПочемуOrderByиTakenByэто отдельные классы, если свойства у них одинаковые? Да и вообще, в чем проблемы? У вас должно все работать. – EvgeniyZ May 23 '21 at 18:00dynamicи используйте класс как положено (item.OrderBy.Name)! (ответ на удалившийся коммент...) – EvgeniyZ May 23 '21 at 18:09item.OrderBy.Name? – EvgeniyZ May 23 '21 at 18:13datagridview, не думаете так? Зачем вот нам, людям, которые совершенно не знают вас и ваш проект знать что либо про JSON, про то что "на JAVA я мог...", про то что "объект в объекте", вот смысл этого, если вам надо лишь кастомную колонку? – EvgeniyZ May 23 '21 at 18:21ToString(public override string ToString() => Name;) уTakenByиOrderBy(это один объект, сделайте один класс, назовите его не знаю,Byи используйте его), автогенерация должна будет вывести все как надо. Другим решением скорей всего будет отказ от автогенерации и созданием колонок самостоятельно. – EvgeniyZ May 23 '21 at 18:23ToStringпредназначен для разработчика (для отладки). Если у вас всё работает, то можете оставить способ с его переопределением, но по гайдам, для вывода информации конечному пользователю, лучше его не использовать. | См. Customize Data Formatting – Alexander Petrov May 23 '21 at 19:02