SerializeObject,DeserializeObject并返回Json

时间:2017-07-24 15:33:11

标签: c# json

反序列化没什么问题。在变量测试中,我得到null。其他的事情如何在方法中返回正确的json。

*在图片中我转换为对象,但通常我会转换为ClaimValue:)

你知道我做错了什么吗?

       foreach (var claim in claims)
        {
            claimValues.Add(new ClaimValue { Type = claim.Type, Value = claim.Value, ValueType = claim.ValueType });
        }

        string json = JsonConvert.SerializeObject(new
        {
            results = claimValues
        });

        var test = JsonConvert.DeserializeObject<ClaimValue>(json);

        return json;
    }
}

public class ClaimValue
{
    public string Value { get; set; }
    public string ValueType { get; set; }
    public string Type { get; set; }
}

enter image description here

1 个答案:

答案 0 :(得分:2)

您将声明列表包装在匿名对象中,因此您的JSON将如下所示:

{
    "results" : [
        { 
            "Type" : "foo",
            "ValueType" : "bar",
            "Value" : "baz"
        },
        {
            // ...
        }
    ]
}

您无法将其反序列化为ClaimsValue,因为这与该结构不匹配。

生成包含包装器和列表的类,如下所示:

public class ClaimsContainer
{
    public List<ClaimsValue> results { get; set; }
}

然后反序列化:

var test = JsonConvert.DeserializeObject<ClaimsContainer>(json);

另见Deserializing JSON into an object