2016-06-23 6 views
-1

Ich habe ein asp.net WebAPI entwickelt und testet es Fiedler mit. Ich erhalte eine Antwort, wie unten gezeigt:WebAPI wie einen Namen haben die JSON-Antwort statt mit JSON Start

Statt dieser

{ 
    "name":"A", 
    "age":"B" 
} 

Kann es wie unten verändert werden?

Aber statt der Antwort mit JSON beginnen möchte ich den benutzerdefinierten Namen haben. Kann jemand helfen, wie man das erreicht?

Dank

+0

Was meinen Sie „um den benutzerdefinierten Namen“? Und das ist nicht JSON. – Utkanos

+0

Muss ich die Antwort in eine Klasse umbrechen, um einen Namen zu erhalten? –

+2

Meinen Sie '{ "User": {...}}' oder tun Sie ungültige JSON absichtlich zurückkehren wollen? Wenn der erste, dann ja, führen Sie einfach eine "Wrapper" oder "Container" -Klasse ein, die eine Eigenschaft enthält: 'public User User {get; einstellen; } '. – CodeCaster

Antwort

2

Sie erscheinen mögen, dass Ihre Antwort in einem „Wrapper“ oder „Container“ Klasse wickeln. Angesichts Ihrer aktuellen Klasse und Antwort sieht wie folgt aus:

public class User 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

public User Get(int id) 
{ 
    return _userRepository.Find(id); 
} 

Dann können Sie einfach diese Wrapper-Klasse hinzufügen:

public class UserContainer 
{ 
    public User User { get; set; } 
} 

Und in Ihrem Controller wickeln:

public UserContainer Get(int id) 
{ 
    var user = _userRepository.Find(id); 
    return new UserContainer 
    { 
     User = user 
    } 
} 

Dadurch wird sehen Sie Ihre Antwort wie folgt aus:

{ 
    "User" : 
    { 
     "Name" : "Foo", 
     "Age" : 42 
    } 
} 

Aber beachten Sie, dass diese semantisch nicht notwendig ist. Der Client ruft bereits den Endpunkt /api/user/42 an, sodass er einen Benutzer zurück erwarten würde. Sie müssen das in Ihrem JSON nicht erneut angeben.

+0

Danke. Ich denke, dass ich verwenden kann, wenn ich Benutzer als Array zurückgebe. In diesem Fall kann ich abgesehen von anderen Eigenschaften diesen Benutzernamen ausschließen, um Camelcase-Objekte auszuschließen? –

+0

Sie können die '[JsonProperty]' verwenden, um Eigenschaften zu benennen, und Sie nicht über einen Wrapper für Arrays als auch benötigen; gib einfach ein 'IEnumerable ' zurück. – CodeCaster

+0

Ok. Danke nochmal. –

Verwandte Themen