我想从一个方法返回一个json。 但我好像漏掉了什么
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace RESTBrowserGET
{
public class BrowseRESTGet
{
public static string GETRESTSimulator(string restUrl, string reqMethod)
{
var request = (HttpWebRequest)WebRequest.Create(restUrl);
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
//return responseString;
var jsonObj = JsonConvert.DeserializeObject<jsonObj>(responseString);
return jsonObj;
}
}
}
这是我的密码。 显然我错过了什么。 请问我好像少了什么? 我得到了以下错误:
Error CS0266 Cannot implicitly convert type 'Newtonsoft.Json.Linq.JObject' to 'string'. An explicit conversion exists (are you missing a cast?)
我好像漏掉了什么? 拜托,我需要一些形式的澄清
编辑
代码现在看起来是这样的
public class BrowseRESTGet
{
public static JObject GETRESTSimulator(string restUrl, string reqMethod)
{
var request = (HttpWebRequest)WebRequest.Create(restUrl);
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
//return responseString;
var jsonObj = JsonConvert.DeserializeObject(responseString);
return jsonObj;
}
}
现在我把这当作错误来斗争
Error CS0266 Cannot implicitly convert type 'object' to 'Newtonsoft.Json.Linq.JObject'
responseString
是一个字符串,因此不需要对其进行反序列化。
对于您的回应,我建议直接反序列化数据,而不是传递JObjects。
public static T GETRESTSimulator<T>(string restUrl, string reqMethod)
{
var request = (HttpWebRequest)WebRequest.Create(restUrl);
var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
//return responseString;
var jsonObj = JsonConvert.DeserializeObject<T>(responseString);
return jsonObj;
}
public void Test()
{
MyDto1 response1 = GETRESTSimulator<MyDto1>("url", "POST");
MyDto2 response2 = GETRESTSimulator<MyDto2>("Url2", "GET");
}
方法返回一个字符串,在返回指令中使用变量jsonObj,它是一个JObject。
如果实现正确,可以对其使用ToString()方法。
但是,我不明白您从一个方法返回一个json是什么意思。 是否要返回包含json的字符串? 还是要返回一个属性与json中的属性匹配的对象?