微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 System.Runtime.Serialization.Json 在不创建类的情况下将 JSON 字符串解析为动态对象

如何解决使用 System.Runtime.Serialization.Json 在不创建类的情况下将 JSON 字符串解析为动态对象

我要解析的 JSON 字符串是来自 API 的响应,该响应可能没有固定的属性。因此无法创建具有属性的类来解析 JSON 字符串。

我尝试将 JSON 字符串解析为动态/Expando 对象,但它没有解析嵌套对象,

例如

string jsonText = "[{ \"FirstName\":\"John\",\"LastName\":\"K\",\"Address\":{\"Line1\":\"Sector 6\"} }]";

我使用以下代码反序列化 JSON 字符串,

public static T Deserialize<T>(this string str) where T : class
        {
            var ser = new DataContractJsonSerializer(typeof(T),new DataContractJsonSerializerSettings
            {
                UseSimpleDictionaryFormat = true,IgnoreExtensionDataObject=true
                
            });
            using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))
            {
                return (T)ser.Readobject(ms);
            }
        }

IEnumerable<ExpandoObject> contactObject = Deserialize<IEnumerable<ExpandoObject>>(jsonText);

代码无法解析 Address 属性。它只是显示对象而不是实际值。

enter image description here

由于项目要求不能使用 NewtonsoftJSON 和 System.Text.Json。

如何在不使用 System.Runtime.Serialization.Json 创建自定义类的情况下将复杂的 JSON 字符串解析为动态对象?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。