无法从字符串转换为 NewtonSoft.Json.JsonReader

Posted

技术标签:

【中文标题】无法从字符串转换为 NewtonSoft.Json.JsonReader【英文标题】:Cannot Convert From String to NewtonSoft.Json.JsonReader 【发布时间】:2021-10-09 04:04:41 【问题描述】:

我是 Xamarin Forms 的新手,我正在尝试创建一个从 API 请求项目列表的方法。但是,由于错误消息,我无法编译解决方案

"Cannot Convert From String to NewtonSoft.Json.JsonReader" 行中 var Items = JsonSerializer.Deserialize<Dictionary<string, Paises>>(content);

这是整个例程:

public static async Task<List<Paises>> GetPaisesActivosAsync()

    string baseUri = new BaseUri().baseUri;
    string sufixUri = "/PaisesApi/GetActives";
    var uri = baseUri + sufixUri;

    List<Paises> listaPaisesActivos = null;

    HttpResponseMessage response = await client.GetAsync(uri);
    if (response.IsSuccessStatusCode)
    
        string content = await response.Content.ReadAsStringAsync();
        var Items = JsonSerializer.Deserialize<Dictionary<string, Paises>>(content);
    
    return listaPaisesActivos;
    

提前感谢您的支持。

问候,

【问题讨论】:

在该行设置断点并检查“内容”中的内容 @Henry Paises 是什么? “内容”不为空? 嗨@Shaw,问题是编程时出现错误,不允许编译解决方案 对不起。你也在使用 Newtonsoft.Json,如果是,试试JsonConvert.DeserializeObject。另外,建议使用var 而不是string 【参考方案1】:

请改用JsonConvert.DeserializeObject()。我在C# 上遇到了同样的问题。使用JsonConvert 而不是JsonSerializer 后,错误应该会消失。

【讨论】:

【参考方案2】:

试试

using System.Text.Json;

而不是

using Newtonsoft.Json;

【讨论】:

大概,他们正在使用 NewtonSoft。要求他们在没有额外指令的情况下转换为完全不同的序列化程序并不是特别有用。使用 System.Text.Json 可能有很多好处,但这并不能回答他们关于 NewtonSoft 的具体问题。

以上是关于无法从字符串转换为 NewtonSoft.Json.JsonReader的主要内容,如果未能解决你的问题,请参考以下文章

webapi 中的错误 - 无法从“System.Web.Mvc.JsonRequestBehavior”转换为“Newtonsoft.Json.JsonSerializerSettings”

无法将“Newtonsoft.Json.Linq.JArray”类型的对象转换为“System.Collections.Generic.List”类型

无法将类型“newtonsoft.json.linq.jtoken”隐式转换为 newt“newtonsoft.json.linq.jvalue”

无法将“Newtonsoft.Json.Linq.JObject”类型的对象强制转换为“Newtonsoft.Json.Linq.JArray”

在 C# 中将字符串转换为 json 格式。 Newtonsoft.json 显示黄色标记

无法将类型'Newtonsoft.Json.Linq.JObject'的对象转换为类型