c# - 如何在属性类型不固定的情况下反序列化 json - 可以是空字符串或对象,请建议。如何处理这种情况?
问题描述
我必须处理 API 响应返回的 JSON 对象。
我尝试通过创建 expando 对象而不是向它添加所有属性。而不是将值复制到它。
dynamic dPropertyLinkValue = new ExpandoObject();
dPropertyLinkValue.link = "";
dPropertyLinkValue.value = "";
我期待一个更好的方法来做到这一点,没有 expando 对象。
解决方案
您可以通过将 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
}
推荐阅读
- python - 对线数组进行排序,以便连接顶点中的点
- linux - 如何解析多行中存在值的 YAML 文件
- c# - 有没有办法从 word 文档中的内容控件中获取内容?
- sql - 带有 CASE 的 SQL 设置 WHERE 语句使用 add 运算符产生错误
- html - 在单词之间添加间距
- node.js - 续集 addConstraint 语法
- python - 应用程序小部件如何链接到应用程序对象?
- c# - Visual Studio 代码通过调试 lauching.json 消失断点
- python - 使用python写入内存地址
- php - 在 Woocommerce 子类别页面上显示子类别下拉列表