【发布时间】:2019-12-19 20:42:39
【问题描述】:
我在使用此 JSON 时遇到问题,无法在组合框和 datagridview 中使用它。我正在使用 Newtonsoft 来做到这一点:
{
"users": [
{
"id": 1,
"name": "Test 1",
"email": "test1@test.com",
"events": [
{
"id": 1,
"name": "Event 1",
"date": "11/10/2019",
"finish": 0
},
{
"id": 2,
"name": "Event 2",
"date": "12/10/2019",
"finish": 0
}
]
},
{
"id": 2,
"name": "Test 2",
"email": "test2@test.com",
"events": [
{
"id": 2,
"name": "Event 2",
"date": "17/10/2019",
"finish": 0
}
]
}
]
}
这就是类 (JsonEvent.cs)。使用 json2csharp.com 生成:
using System;
using System.Collections.Generic;
namespace TestDO.Models
{
class JsonEvent
{
public partial class Admin
{
public List<User> Users { get; set; }
}
public partial class User
{
public long Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public List<Event> Events { get; set; }
}
public partial class Event
{
public long Id { get; set; }
public string Name { get; set; }
public string Date { get; set; }
public long Finish { get; set; }
}
}
}
但现在,我不知道如何将结果与组合框数据源或数据网格一起使用。
到目前为止,我唯一一次处理这个问题是为了一个更简单的主题,比如这个(这是和例子,它与这个无关): JsonResponde.cs
namespace TestDO.Models
{
class JsonResponse
{
public string Upgraded { get; set; }
public string time{ get; set; }
}
}
然后我像这样检查升级的结果:
var jResponse = JsonConvert.DeserializeObject<JsonResponse>(json);
if (jResponse.Upgraded == "true")
但我不知道如何使用更复杂的 json 来做到这一点。
我想使用事件 id 作为组合框,使用事件名称进行显示。
对于数据网格,每行的用户 ID、用户名、事件名称、事件日期。
提前感谢您为解决问题提供的任何帮助。
【问题讨论】:
-
JsonConvert.DeserializeObject<Admin>(json);呢? -
@Twenty 是正确的,然后您的
jResponse将填充Users,然后您可以使用它。此外,Upgraded不存在于Admin中,您将在那里遇到异常。 -
您需要反序列化数据的帮助,还是想知道如何将您的类用作 ComboBox 或 DataGrid 数据源?
-
@Çöđěxěŕ >
So far the only time I've worked with this has been for a much simpler topic like this。我的意思是,这不是 100% 的保证,但很有可能。 -
@Twenty 好点,不确定;这绝对是一种可能。