JsonConvert 在 Newtonsoft.Json Asp.net MVC C# 中不起作用

Posted

技术标签:

【中文标题】JsonConvert 在 Newtonsoft.Json Asp.net MVC C# 中不起作用【英文标题】:JsonConvert Not working in Newtonsoft.Json Asp.net MVC C# 【发布时间】:2021-07-29 01:13:28 【问题描述】:

我用的是Newtonsoft.Json.JsonConvert,但是报错如下:

“JsonConvert”类型存在于“Newtonsoft.Json”中, 版本=9.0.0.0,文化=中性,PublicKeyToken=30ad4fe6b2a6aeed' 和 'Newtonsoft.Json,版本=12.0.0.0,文化=中性, PublicKeyToken=30ad4fe6b2a6aeed'

给出错误的图像

这是我做过的事情:

    我已经构建了项目 Build -> Clean 然后 Build -> Rebuild 我右键单击项目并卸载项目,然后重新加载项目 我曾经删除重装过Newtonsoft.Json

以上我都做了,但是问题还没有解决怎么办? 我使用.net 4.6.1

在 web.config(运行时标签)中

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f"/>
        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.1.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
        <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-5.2.4.0" newVersion="5.2.4.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

【问题讨论】:

我们需要更多地了解您正在使用的项目类型。基本上,您可能需要从版本 9 到版本 10 的 程序集绑定重定向...但是如果不了解有关您的应用程序的详细信息,很难比这更具体。 (如果您能够转移到 SDK 样式的项目,您可以在其中指定 NuGet 包作为引用,根据我的经验,这往往会使事情变得更简单。) 版本 9 到版本 12 @JonSkeet 可能是其他项目或组件参考 Newtonsoft 您希望我在帖子中添加什么样的信息? @JonSkeet 您可以先告诉我们您的申请。它是一个什么样的应用程序?您有哪些依赖项(以及哪些版本)?您使用的是哪个版本的 .NET?目前有哪些程序集绑定重定向到您?你能提供minimal reproducible example吗? 【参考方案1】:

这是因为您的项目本身包含Newtonsoft JSON library with version Aone of the other project it reference also contains Newtonsoft JSON library version B

尝试为这两个项目引用一个版本。

你可以试试

    删除较旧的,最好(从项目之一) 清理并重建整个解决方案 解决新的引用问题

【讨论】:

我只有一个项目有这个库,没有其他项目 尽管这描述了问题,但它未能解决它。

以上是关于JsonConvert 在 Newtonsoft.Json Asp.net MVC C# 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

“Newtonsoft.Json.JsonConvert”类型存在于“Newtonsoft.Json.dll”和“NuGetApi2.dll”中

Newtonsoft.Json.JsonConvert 序列化与反序列化

找不到方法 Void Newtonsoft.Json.JsonConvert.set_DefaultSettings

Newtonsoft.Json.JsonConvert 从同一个类中序列化和反序列化

找不到JsonConvert.cs

json Xml 互转