【问题标题】:Error CS0266 Cannot implicitly convert type 'Newtonsoft.Json.Linq.JObject' to 'string'. An explicit conversion exists (are you missing a cast?)错误 CS0266 无法将类型“Newtonsoft.Json.Linq.JObject”隐式转换为“字符串”。存在显式转换(您是否缺少演员表?)
【发布时间】:2020-06-15 14:15:25
【问题描述】:

我想从一个方法返回一个 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'

编辑

代码编辑为

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 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<JObject>(responseString);
            return jsonObj;
        }
    }
}

最新编辑

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;
}

【问题讨论】:

  • 这对你有帮助吗? JObject json = JObject.Parse(str);
  • 一点也不@viveknuna
  • 报错了吗?
  • GETRESTSimulator返回类型更改为JObject或返回responseString
  • @viveknuna,是的

标签: c# json rest


【解决方案1】:

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");

    }

【讨论】:

  • 我希望它返回 JSON 对象,以便我可以将来自 REST api 的信息用于我正在开发的应用程序的其他部分
  • 无法将类型 T 转换为字符串,这就是它现在所说的
  • 函数返回类型也必须是T
【解决方案2】:

您的方法返回一个字符串,并在返回指令中使用变量 jsonObj,它是一个 JObject。

如果实现正确,您可以对其使用 ToString() 方法。

但是,我不明白您从方法返回 json 是什么意思。你想返回一个包含 json 的字符串吗?还是要返回一个属性与 json 中的对象匹配的对象?

【讨论】:

  • 我想返回一个包含 Json 对象的字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
相关资源
最近更新 更多