【问题标题】:Asp.Net returns empty JSON instead of MessageAsp.Net 返回空 JSON 而不是 Message
【发布时间】:2020-12-10 16:10:53
【问题描述】:

我有这段代码,用于从数据库中获取消息:

[HttpGet]
        public string RecieveMessagesFromDatabase(int ChatID)
        {
// Before - Query formatting and execution
                while(reader.Read())
                {
                    for (int i = 0; i < UserList.Count; i++)
                    {
                        if (ChatID == 1)
                        {
                            TempMessageStorage.Add(
                                new Messages(reader["Message"].ToString(), Convert.ToInt32(reader["SenderID"]),
                                reader["Date"].ToString(), ReceiverID, groupid));
                        } // Public Chat
                        else if (ChatID == 2)
                        {
                            if (i == Convert.ToInt32(reader["SenderID"]) || i == Convert.ToInt32(reader["ReveiverID"]))
                            {
                                TempMessageStorage.Add(
                                new Messages(reader["Message"].ToString(), Convert.ToInt32(reader["SenderID"]),
                                reader["Date"].ToString(), ReceiverID, groupid));
                            }
                        } // Private Chat
                        else if(ChatID == 3)
                        {
                            if (i == Convert.ToInt32(reader["SenderID"]) || i == Convert.ToInt32(reader["ReveiverID"]))
                            {
                                TempMessageStorage.Add(
                                new Messages(reader["Message"].ToString(), Convert.ToInt32(reader["SenderID"]),
                                reader["Date"].ToString(), ReceiverID, groupid));
                            }
                        } // Group Chat
                    }
                }
                return JsonSerializer.Serialize(TempMessageStorage);
            }
            catch(Exception ex)
            {
                Content(ex.Message);
            }
            finally
            {
                reader.Close();
                _Connection.Connection.Close();
            }
            return null;
        }

TempMessageStorage 中存在消息,并且不为空。但 JSON 返回空结果。但并不是真的空。它似乎得到了记录的数量,但它们是空的。这就是它的样子 - https://prnt.sc/u3d8gc

消息类包含

【问题讨论】:

  • 您是否尝试过在模型类的属性中添加 get 和 set。
  • 你还需要连载吗?只需返回 TempMessageStorage 并将返回类型更改为 List&lt;TempMessgeStorage&gt; 就足够了。
  • 嗯...带有 JS 的客户端将如何使用没有 JSON 格式的数据?
  • @Raitis 数据将由 ASP.NET 本身根据请求的 Accept-Type 标头进行格式化。您是否注意到没有 ASP.NET 教程或示例显式序列化?
  • 在 C# 中,属性不仅仅是 getter 和 setter 方法,它们是类接口的一部分。字段不是,即使它们是公开的。它们只是实现细节。默认情况下,序列化程序使用属性,而不是字段。您的 DTO 没有属性,因此不会序列化任何内容。虽然您可以将序列化程序配置为使用字段,但正确的解决方案是使用属性

标签: c# asp.net json


【解决方案1】:

我确信在 C# ASP.NET API 中您不需要序列化/反序列化对象,因为默认情况下它们将作为 json 图像返回

[HttpGet]
public object Get()
{
    return new { number = 1, word = "hi" };
}

在客户端,他们会得到一个描述该对象的 json,您不需要序列化。 json 会是这样的:

{"number":1,"word":"hi"}

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2012-02-26
    • 2023-04-05
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 2012-06-20
    • 2013-08-18
    相关资源
    最近更新 更多