2

サービスの作成にIPWorksnsoftwareを使用しています。その中で、私が使用しているサービスを呼び出すために

        Rest rest = new Rest();
        rest.Accept = "application/json";
        rest.ContentType = "application/json";
        rest.User = "UserName";
        rest.Password = "Password";
        rest.Get(@"http://Foo.com/roles.json");
        string result = rest.TransferredData;
        var listRoles = JsonSerializer.DeserializeFromString<List<role>>(result);

Jsonの応答を文字列として取得しています

[{"role":{"name": "Administrator"、 "created_at": "2012-02-11T09:53:54-02:00"、 "updated_at": "2012-04-29T23:43:47- 04:00 "、" id ":1"}}、{"role":{"name": "NormalUser"、 "created_at": "2013-02-11T08:53:54-02:00"、 "updated_at ":" 2013-04-29T23:43:47-03:00 "、" id ":2"}}]

ここで、json文字列には、応答に追加されるドメインオブジェクト「role」が含まれています(つまり、メッセージの本文スタイルがラップされています)。ServiceStack.TextのDeserializerを使用して、応答文字列をオブジェクトに変換しています。しかし、それは包まれているので、脱セリル化は正しくありません。

ここで欠けているものはありますか?Restリクエストに追加できる「BodyStyle」属性はありますか?

4

1 に答える 1

2

GitHubRestTestsは、 ServiceStackのJSONシリアライザーを使用してサードパーティのjsonAPIを逆シリアル化するさまざまな方法のいくつかを示しています。

型付きPOCOに逆シリアル化する場合は、JSONペイロードで判断すると、型付きPOCOは次のようになります。

public class RolePermissionWrapper 
{
    public Role Role { get; set; }
    public Permission Permission { get; set; }
}

public class Role 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
    public DateTime? Created_At { get; set; } 
    public DateTime? Updated_At { get; set; } 
} 

var listRoles = JsonSerializer.DeserializeFromString<List<RolePermissionWrapper>>(result);
于 2012-05-29T04:00:12.773 に答える