为什么在使用JToken.Value()方法时会出现错误

  • 本文关键字:方法 错误 Value JToken c# json
  • 更新时间 :
  • 英文 :


下面的GetValue方法以JSON格式接收传入符号的数据,并使用Newtonsoft.JSON库将数据转换为动态对象。TryGetValue方法是从JSON数据中获取作为参数传入的字段名的值。最后,如果字段有效,则返回数据,但如果字段无效,则返回错误消息。

private string GetValue(string symbol, string field)
{
string json = HttpGet(symbol, field);
dynamic obj = JsonConvert.DeserializeObject(json);
var quote = obj.query.results.quote;
JToken returnValue = null;
quote.TryGetValue(field, out returnValue);
if (returnValue != null)
return returnValue.Value();
return field + " is not a valid field name.";
}

我的问题在下面一行,我得到了错误";没有给出与"JToken.Value(object("的必需形式参数"key"相对应的参数:

return returnValue.Value();

如何修复此错误?

我觉得这篇文章有点过时了。在过去的几年里,Newtonsoft.Json图书馆确实有更新。JToken中的函数值变为泛型。从string JToken.Value();T JToken.Value<T>();。您基本上对编译器说,返回值是一个字符串。

在你的情况下,你可以用修复你的代码

private string GetValue(string symbol, string field)
{
string json = HttpGet(symbol, field);
dynamic obj = JsonConvert.DeserializeObject(json);
var quote = obj.query.results.quote;
JToken returnValue = null;
quote.TryGetValue(field, out returnValue);
if (returnValue != null)
return returnValue.Value<string>();
return field + " is not a valid field name.";
}

当我假设下面的json来自HttpGet(符号,字段(时,我测试了这段代码

string field = "Test";
string json = "{ "query": { "results": { "quote": { "Test": "Random" } } } }";

最新更新