c# - JSON 反序列化为泛型

标签 c# json serialization

我正在为我的 Controller (ASP.NET Core) 编写测试,并且正在接收一些 JSON。我现在想将它反序列化为正确的对象,以便我可以对返回的数据进行一些断言。反序列化期间没有抛出异常,但我的 Data 变量为空。

这里是反序列化的代码:

var output = JsonConvert.DeserializeObject(responseString,
                typeof(CrudOperationResult<IEnumerable<ApiResource>>));

这是 CrudOperationResult 类:

public class CrudOperationResult<T>
{
    private CrudOperationResult()
    { }

    private CrudOperationResult(CrudResult result, string errorMessage, T data)
    {
        Result = result;
        ErrorMessage = errorMessage;
        Data = data;
    }

    [JsonIgnore]
    public CrudResult Result { get; private set; }

    public bool IsError
    {
        get
        {
            return Result == CrudResult.Error;
        }
    }

    public string ErrorMessage { get; private set; }

    public T Data { get; private set; }
}

这是返回的 JSON 数据:

{
    "isError": false,
    "errorMessage": null,
    "data": [{
        "id": 1,
        "enabled": true,
        "name": "apiResource1",
        "displayName": "My API",
        "description": null,
        "secrets": null,
        "scopes": [{
            "id": 1,
            "name": "apiResource1",
            "displayName": "My API",
            "description": null,
            "required": false,
            "emphasize": false,
            "showInDiscoveryDocument": true,
            "userClaims": null
        }],
        "userClaims": [{
            "id": 1,
            "type": "role"
        },
        {
            "id": 2,
            "type": "user"
        }]
    }]
}

最佳答案

因为 [...] JsonConvert.DeserializeObject认为数据a List<T> Data { get; private set; } .

关于c# - JSON 反序列化为泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44416588/

相关文章:

php - FOSElastica + JMs 序列化程序格式错误的数据

c# - 使用 MVC5 应用程序将数据库从本地 SQL 切换到 AZURE DB

c# - 为什么 C# 不允许在 switch 语句的不同 case block 中声明具有相同编号的变量?

c# - 如何将 unix 时间戳转换为日期时间

java - 将 List<javax.persistence.Tuple> 序列化为 JSON

json - "Ternary logic"返回值 : foo, bar 或错误

c# - 从 WebControl 中获取 QueryString

mysql - JSON/MySQL : list indices must be integers or slices, 不是 str

c# - SOAP 泛型类型序列化

.net - XML 序列化继承类时出现 InvalidOperationException