下面的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" } } } }";