asp.net - 如何制作 JsonConvert.DeserializeObject() 当我不总是将数组传递给它时解析数组?
问题描述
我的 ASP.Net 应用程序中有一个方法,如下所示:
Method1<T>(String inputString)
{
return JsonConvert.DeserializeObject<T>(inputString);
}
我将字符串化对象传递给Method1
,其中一个是该对象的字符串化版本:
obj1: {
a: ...
b: [...]
}
IE。obj1
是一个具有数组作为属性的对象。现在,按原样,JsonConvert.DeserializeObject<T>(inputString)
不会解析该对象的数组部分。我从这篇文章中了解到,如果我做到type1
了,我可以完成这项工作。问题是我会将各种不同类型对象的字符串化版本传递给,所以除了使用.obj1
JsonConvert.DeserializeObject<type1>(inputString)
Method1
<T>
有谁知道我该如何解决这个问题?
解决方案
Newtonsoft.Json.Linq
api 非常适合这种情况。您可以将 json 解析为抽象JToken
对象,并查看令牌类型以确定如何提取数组。
public MyType[] GetArrayFromJson(string json)
{
var token = JToken.Parse(json);
if (token.Type == JTokenType.Array)
{
return token.ToObject<MyType[]>();
}
else if(token.Type == JTokenType.Object)
{
return token["arrayPropName"].ToObject<MyType[]>();
}
}
推荐阅读
- r - R 对唯一列 PAIRS(BA 和 AB)和非唯一组合(BA 或 AB)的观测值求和
- swift - @FetchRequest - 使用 NSPredicate - 只接受
- javascript - 在控制器angularjs中获取表单的单选按钮选定值
- kubernetes - kubernetes 节点无法连接到 api-server:拨号 tcp:在 127.0.0.53:53 上查找 kubernetes.default.svc:没有这样的主机
- python - 嵌套的 While 循环没有按照我想要的方式工作
- intellij-idea - 阻止 Intellij 防止由于项目中的全局更改而撤消文件中的更改
- javascript - 了解 jQuery 在内部是如何工作的
- facebook - 在 Instagram 基本显示 API 中出现“应用程序限制”错误
- scala - 关于 Jenkins 的空白覆盖率 HTML 报告
- c++ - 在标题中初始化类的变量