根據JSON spec,表示空值的正確方法是文字null
。爲什麼WCF/JSON不爲null返回值返回`null`?
如果是這樣,爲什麼WCF返回空響應而不是null
?這是一個錯誤還是這種行爲記錄在某處?
完成攝製例如:
using System;
using System.ServiceModel;
using System.ServiceModel.Web;
[ServiceContract()]
public class Service1
{
[OperationContract(), WebGet(ResponseFormat = WebMessageFormat.Json)]
public string GetSomeString() { return "SomeString"; }
[OperationContract(), WebGet(ResponseFormat = WebMessageFormat.Json)]
public string GetNull() { return null; }
}
public class Host
{
public static void Main()
{
// Very simple WCF server
var host = new WebServiceHost(typeof(Service1), new Uri("http://localhost:8000/"));
host.AddServiceEndpoint(typeof(Service1), new WebHttpBinding() {
HostNameComparisonMode = HostNameComparisonMode.Exact
}, "");
host.Open();
Console.WriteLine("Service is running, press enter to quit...");
Console.ReadLine();
host.Close();
}
}
預期結果:
$ curl http://localhost:8000/GetSomeString && echo
"SomeString"
$ curl http://localhost:8000/GetNull && echo
null
$
實際結果:
$ curl http://localhost:8000/GetSomeString && echo
"SomeString"
$ curl http://localhost:8000/GetNull && echo
$
因爲空值可以用許多不同的方式表示。看到這篇文章的更多信息:http://stackoverflow.com/questions/21120999/representing-null-in-json –
@TomRedfern:該帖子的接受答案還聲稱,null應該表示null應該根據JSON規範。我的問題是*爲什麼* WCF偏離規範。 – Heinzi
根據[最近的答案](http://stackoverflow.com/a/39933043/11683),我想知道你的服務是否實際上用'Content-Type:application/json'響應? – GSerg