首页 > 解决方案 > 如何在属性类型不固定的情况下反序列化 json - 可以是空字符串或对象,请建议。如何处理这种情况?

问题描述

我必须处理 API 响应返回的 JSON 对象。

我尝试通过创建 expando 对象而不是向它添加所有属性。而不是将值复制到它。

dynamic dPropertyLinkValue = new ExpandoObject();

dPropertyLinkValue.link = "";

dPropertyLinkValue.value = ""; 

我期待一个更好的方法来做到这一点,没有 expando 对象。

标签: c#json

解决方案


您可以通过将 JSON 转换为动态对象来反序列化它。请参考以下示例:此处将 Json 反序列化为动态对象,然后循环遍历其属性,您可以检查您是否重视它是否是对象。

        string jsonText = "{a:'testString',b:{'prop1':'value1'}}";
        var jObj = JsonConvert.DeserializeObject<dynamic>(jsonText);            
        foreach (JProperty property in jObj)
        {
            string text = property.Name + " : " + property.Value;
            //Here you can check whether property.Value is Jobject or any other value
        }

推荐阅读