将KeyValuePairs的集合转换为对象实例。 JSON的反序列化

时间:2011-07-26 09:26:08

标签: c# json wcf-web-api

这是一个两部分问题。我想第一个是,我是最好的方式来做这个,第二个是我遇到的障碍。以下代码适用于字符串属性,但不适用于例如int。我将KVP中的int值作为字符串获取,但是我无法在属性上将字符串设置为int。我找不到让我解析的语法。

[WebInvoke(UriTemplate = "", Method = "POST")]
public Response Post(JsonValue items)
{
    List<Provider> providers = new List<Provider>();
    foreach (var item in items)
    {
        var json = item.Value;
        var provider = new Provider();

        foreach (var property in typeof(Provider).GetProperties())
        {
            if (json.ContainsKey(property.Name))
                property.SetValue(provider, json[property.Name].ToString(), null);
        }

        providers.Add(provider);
    }

    return new Response { success = true, data = providers };
}

1 个答案:

答案 0 :(得分:1)

您可以switch超过property.PropertyType并相应地解析字符串。

但是,我不建议您编写自己的JSON反序列化程序。使用DataContract API:Tutorial