C# 返回<;T>;json的字符串
这让我很沮丧,谷歌现在不是我的朋友 我有一个GET方法返回参数TC# 返回<;T>;json的字符串,c#,.net,json,C#,.net,Json,这让我很沮丧,谷歌现在不是我的朋友 我有一个GET方法返回参数T public T GET(string path, string filter = "", string select = "") { //Check for accesstoken oAuthHelper.GetAccessToken(); //request token var restclient = new RestClient(_url);
public T GET(string path, string filter = "", string select = "")
{
//Check for accesstoken
oAuthHelper.GetAccessToken();
//request token
var restclient = new RestClient(_url);
RestRequest request = new RestRequest(string.Format("api/v1/{1}/{0}", path, Global._DIVISION)) { Method = Method.GET };
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/text");
//GUID FILTER"
//string.Format("ID eq guid'{0}'", "6526d916-173b-4c23-b3da-068c70d6a867")
if (!string.IsNullOrEmpty(filter))
request.AddParameter("$filter", filter, ParameterType.QueryString);
if (!string.IsNullOrEmpty(select))
request.AddParameter("$select", select, ParameterType.QueryString);
request.AddParameter("Authorization", string.Format("Bearer " + Global._ACCESTOKEN),
ParameterType.HttpHeader);
var tResponse = restclient.Execute(request);
var responseJson = tResponse.Content;
JObject obj = JObject.Parse(responseJson);
JArray categories = (JArray)obj["d"]["results"];
if (categories.Count == 0)
{
return default(T);
}
string JSON = categories.ToString();
return JsonConvert.DeserializeObject<T>(JSON);
}
当我将其作为列表返回时,它将起作用
但就像输入字符串一样,它会给出eror
T是字符串类型,我只想返回纯JSON数据
//HttpClientWrapper
using (var client = new HttpClientWrapper<string>())
{
var data = client.GET(_URL, null, null);
return data.ToString();
}
如果您想要纯JSON数据,为什么要调用反序列化对象
听起来你想要这样的东西:
...
string JSON = categories.ToString();
// exit early, if we want the plain JSON data
if (typeof(T) == typeof(string))
return (T)(object)JSON;
return JsonConvert.DeserializeObject<T>(JSON);
。。。
字符串JSON=categories.ToString();
//如果我们想要纯JSON数据,请尽早退出
if(typeof(T)=typeof(string))
返回(T)(object)JSON;
返回JsonConvert.DeserializeObject(JSON);
双重强制转换
(T)(object)
是必要的,因为我们知道T
是字符串类型,但编译器不是。是的,这就是我要找的!我非常接近,但没有做到这一点。搜索google和stack并没有给我一个好的答案!谢谢你!您不应该尝试将JSON反序列化为字符串。JSON已经是一个字符串。
...
string JSON = categories.ToString();
// exit early, if we want the plain JSON data
if (typeof(T) == typeof(string))
return (T)(object)JSON;
return JsonConvert.DeserializeObject<T>(JSON);