创建数据模型以接受所有JSON C#

时间:2018-01-31 22:04:16

标签: c# json entity-framework

所以我使用名为Chat的数据模型创建端点,该模型将接受此JSON表单中的数据并将其存储在数据库中。

[{
    "ID": "123456",
    "Chat": [{
            "ID": "1",
            "Message": "User: that's a nice car Dylan: thanks",
            "PostedBy": "Dylan",
            "PostedOn": "2018-01-23T18:25:43.511Z"
        },
        {
            "ID": "2",
            "Message": "User: that's a really nice car Terry: thanks ",
            "PostedBy": "Terry",
            "PostedOn": "2018-02-23T18:25:43.511Z"
        },
        {
            "ID": "3",
            "Message": "User: that's the best car Roger: thanks",
            "PostedBy": "Roger",
            "PostedOn": "2018-03-23T18:25:43.511Z"
        }
    ]
}]

这就是我目前所拥有的,当我向端点发送数据时,它只存储ID,而不存储数据库中的任何其他内容。如何改变我的模型以接受正在发送的全部数据,我们对任何想法/指导表示赞赏。

public class Chat
{
    public string ID { get; set; }

    public string message { get; set; }

    public string postedBy { get; set; }

    public DateTime? postedOn { get; set;}
}

2 个答案:

答案 0 :(得分:0)

我可能在这里错了,但在我看来,您正在使用代表单个消息实例(类Chat)的类来尝试存储整个聊天数据列表。

如果我是对的,它实际存储ID的唯一原因是它碰巧在数据中的两个不同级别具有相同的名称;一个用于外部列表(整个集合 - 这是存储的内容),每个内部聊天项目一个。

尝试添加此类,然后使用它(或者更确切地说,因为它实际上包含已存在的类Chat的实例列表):

public class ChatThread
{
    public string ID { get; set; }
    public IEnumerable<Chat> Chat { get; set; }
}

答案 1 :(得分:0)

存储在您对象上的ID不是ID对象中的Chat,而是聊天对象常见的更高ID定义。

如果我们忽略了你没有考虑到C#是区分大小写的语言这一事实​​,你真的很接近。 “更高”层由字符串ID组成,但也包含Chat个对象的数组,因此您应创建一个Class来保存这两个属性的定义。

public class JsonClass
{
    public string ID { get; set; }
    public Chat[] Chat { get; set; }
}

public class Chat
{
    public string ID { get; set; }
    public string Message { get; set; }
    public string PostedBy { get; set; }
    public DateTime PostedOn { get; set; }
}

由于Chat ID属性存在多个JsonClass个对象,因此必须将其设置为某种类型的集合。我选择了一个数组,但您可以使用其他Collection个对象,例如List