WebApi不会序列化空字段

时间:2012-08-16 22:24:48

标签: html asp.net-mvc json asp.net-web-api

我的web api中有以下命令:

return Request.CreateResponse(HttpStatusCode.OK, 
    MyDBContext.DB.Database.SqlQuery<MyCustomerClass>("SELECT * FROM CUSTOMER").ToList());

这是表格:

CREATE TABLE [dbo].[Customer] (
    [CustomerID] [int] NOT NULL,
    [FirstName] [nvarchar](50) NOT NULL,
    [LastName] [nvarchar](50) NULL,
    CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED 
([CustomerID] ASC) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE = OFF, 
      IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) 
      ON [PRIMARY]
) ON [PRIMARY]

GO

我发现在从webApi请求数据时,如果字段为null,则返回的JSON结果不包括返回结果中的该字段。这是预期的行为吗?

2 个答案:

答案 0 :(得分:3)

我发现修复程序是在json格式化程序序列化程序设置中指定以下内容:

jsonFormatter.SerializerSettings = new JsonSerializerSettings() 
{ 
   NullValueHandling = NullValueHandling.Include 
};

答案 1 :(得分:1)

我不认为这是预期的行为。至少在JSON方面。我不能谈论WebAPI,因为我没有使用它。在我的一个使用JSON的项目中,如果我要发出以下代码:

# Package our response into an array... 
$response = array("type"=>"remove_from_distribution_list","results");                   

# And send it back to XMLHttpRequest object encoded...       
echo json_encode($response);

结果没有值,结果仍会传递。只会没有价值传递给它。