【发布时间】:2014-06-05 00:28:05
【问题描述】:
我的出发点是这样的(这里简化了):
private object GetPropValue(JToken token, Type type)
{
return JsonConvert.DeserializeObject(token["prop"].ToString(), type);
}
用法:
var value = GetPropValue(JObject.Parse(someJsonWithAPropertyNamedProp), typeof(someTypeFoundByReflection));
这可行,但类型是字符串。
根据文档,JValue 的 ToString() 应该返回 JSON,但是当 JValue 是类型字符串时,返回的值不是 JSON,而是一个简单的字符串,没有用转义引号包裹.
因此,我得到一个例外:
“Newtonsoft.Json.JsonReaderException”类型的异常发生在 Newtonsoft.Json.dll 但未在用户代码中处理
附加信息:解析时遇到意外字符 值:s。路径'',第 0 行,第 0 位置。
实现这一目标的最佳方法是什么?如果 JToken 是字符串类型,则添加条件?
【问题讨论】: