我開發了一個asp.net webapi並使用fiddler進行測試。我得到的迴應如下圖所示:Webapi如何有一個名稱的JSON響應,而不是從JSON開始
取而代之的是
{
"name":"A",
"age":"B"
}
是否可以更改如下?
User{
"name":"A",
"age":"B"
}
但是,而不是以JSON開始的響應,我想有自定義名稱。任何人都可以幫助如何做到這一點?
感謝
我開發了一個asp.net webapi並使用fiddler進行測試。我得到的迴應如下圖所示:Webapi如何有一個名稱的JSON響應,而不是從JSON開始
取而代之的是
{
"name":"A",
"age":"B"
}
是否可以更改如下?
User{
"name":"A",
"age":"B"
}
但是,而不是以JSON開始的響應,我想有自定義名稱。任何人都可以幫助如何做到這一點?
感謝
你似乎想換一個「包裝」或「容器」類的響應。鑑於你目前的等級和響應看起來是這樣的:
public class User
{
public string Name { get; set; }
public int Age { get; set; }
}
public User Get(int id)
{
return _userRepository.Find(id);
}
然後,你可以簡單地添加這個包裝類:
public class UserContainer
{
public User User { get; set; }
}
而且在你的控制器把它包:
public UserContainer Get(int id)
{
var user = _userRepository.Find(id);
return new UserContainer
{
User = user
}
}
這將使您的回覆如下所示:
{
"User" :
{
"Name" : "Foo",
"Age" : 42
}
}
但請注意,這在語義上是不必要的。客戶端已經呼叫/api/user/42
端點,所以他們希望用戶回來。沒有必要再次在你的JSON中指明。
謝謝。我想我可以使用,如果我作爲數組返回用戶。在這種情況下,除了其他屬性,我可以排除這個用戶名來排除camelcase的事情嗎? –
您可以使用'[JsonProperty]'重命名屬性,並且您也不需要包裝數組的包裝;只需返回一個'IEnumerable
好的。再次感謝你。 –
你是什麼意思「自定義名稱」?這不是JSON。 – Utkanos
我是否需要在課堂中包裝答覆以獲得姓名? –
你的意思是'{「User」:{...}}'還是你故意要返回無效的JSON?如果前者是,那麼簡單地引入包含一個屬性的「包裝器」或「容器」類:public User User {get;組; }'。 – CodeCaster