【问题标题】:Parse json property to a specific type将 json 属性解析为特定类型
【发布时间】: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 是字符串类型,则添加条件?

【问题讨论】:

    标签: c# json json.net


    【解决方案1】:

    JToken 已经有一个内置的ToObject() 方法来做你想做的事。如果您更改 GetPropValue 方法以使用它而不是从 JSON 来回转换,一切都应该正常工作:

    private object GetPropValue(JToken token, Type type)
    {
        return token["prop"].ToObject(type);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      相关资源
      最近更新 更多