将json属性解析为特定类型
本文关键字:类型 json 属性 | 更新日期: 2023-09-27 18:06:56
我的起点是这样的(这里简化了):
private object GetPropValue(JToken token, Type type)
{
return JsonConvert.DeserializeObject(token["prop"].ToString(), type);
}
用法:
var value = GetPropValue(JObject.Parse(someJsonWithAPropertyNamedProp), typeof(someTypeFoundByReflection));
可以,只是类型是string。
根据文档,JValue的ToString()应该返回JSON, 但是当JValue是类型字符串时,返回的值不是JSON,而是一个简单的字符串,没有转义引号
因此,我得到一个异常:类型为'Newtonsoft.Json '的异常。JsonReaderException'发生在Newtonsoft.Json.dll,但在用户代码中未处理
附加信息:解析时遇到意外字符"路径",行0,位置0.
实现这一目标的最佳方法是什么?如果JToken是string类型,则添加一个条件
JToken
已经有一个内置的ToObject()
方法来做你想做的事情。如果你改变你的GetPropValue
方法使用,而不是从JSON来回转换,一切都应该工作良好:
private object GetPropValue(JToken token, Type type)
{
return token["prop"].ToObject(type);
}