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



所以我正在使用一个名为 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;}
}

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

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

尝试添加这个类,并改用它(或者更确切地说是另外,因为它实际上包含你已经存在的类Chat的实例列表(:

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

对象上的ID不是Chat对象的ID,而是聊天对象常见的更高ID定义。

如果我们忽略您没有考虑到 C# 是一种区分大小写的语言这一事实,那么您真的很接近。"更高"层由 String 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; }
}

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

最新更新