将Json.Net添加到Unity3D项目中

18

我通过NuGet包将Json.Net库添加到了Visual Studio 2013中,并安装了NetFramework 4.5。在Visual Studio中,当我添加

using Newtonsoft.Json;

时,并没有出现错误,但是在Unity3D 5.0中,我却遇到了以下错误:

Assets/RobotController.cs(5,7): error CS0246: The type or namespace name `Newtonsoft' could not be found. Are you missing a using directive or an assembly reference?

我在该项目的“packages”文件夹中查找了dll文件,所以我不明白问题出在哪里。谢谢您的帮助。


1
你尝试重新构建了吗? - Daniel A. White
5
尝试将*.dll文件放入Assets/Plugins文件夹中。 - Utamaru
所以显然目标框架仍然是3.5。在我选择了正确的.dll文件之后,在Visual Studio中重新构建项目时没有出现错误(当我选择错误的文件时有几个警告)。如果我从NET 3.5的packages文件夹中复制.dll文件,则会出现以下错误:未处理的异常:System.Reflection.ReflectionTypeLoadException:无法加载模块中的类。在(wrapper managed-to-native) System.Reflection.Assembly:GetTypes (bool) - KonfuPanda
8个回答

19

我在Visual Studio 2015中遇到了同样的问题,但Utamaru的解决方案适用于我。

创建一个文件夹:Assets / Plugins,在其中放置*.dll文件并将其添加为引用。

要添加引用,请在Visual Studio的“解决方案资源管理器”中选择“分析器”,然后在“项目”>“添加引用”下通过浏览到Assets / Plugin找到位于其中的*.dll文件。

在Visual Studio 2015中添加引用第1部分 在Visual Studio 2015中添加引用第2部分


1
我还不得不重新启动Unity。 - idbrii

6

对于内置版本的支持,建议使用以下之一:

或者如果您不需要Newtonsoft.Json(Json.NET),这里有一些其他的替代品(所有这些都可以在Unity中工作,我省略了不工作的库):

有很多糖果可以选择。年轻的帕达万人,要明智选择~

1
Json.NET v12.0 github.com/jilleJr/Newtonsoft.Json-for-Unity 帮了我很大的忙,谢谢! - Olexiy Dymashok
这个版本的.unitypackage是唯一能在我的Unity v2017.4.23f1中正常工作的:SaladLab/Json.Net.Unity3D -> Json.Net 7.0.1。我之前在使用Unity资产ClaytonIndustries/QuickSave时遇到了问题。 - Raphael Setin

4

4
我发现了这个项目:https://github.com/SaladLab/Json.Net.Unity3D
Newtonsoft Json.NET 是.NET生态系统中事实上的标准JSON库。但是它不支持Unity3D,因此在获取Json.NET包后使用JSON.NET有点困难。这个包是为需要在Unity3D中使用最新的Json.NET的Unity3D程序员而设计的。
只需导入unity,就可以开始使用了。

2

使用SimpleJson,它免费且功能齐全。

将SimpleJSON.cs的内容复制到项目中新建的文件中即可使用。如果您想更加高端,可以将这个新文件创建在assets\plugins目录下。

http://wiki.unity3d.com/index.php/SimpleJSON


4
这并没有回答这个问题。 - sonofrage

1

5
但它售价25美元,而NewtonSoft Json.net通过NuGet是免费的! - Recipe
1
是的,但是通过NuGet免费提供的版本不兼容。这就是为什么在Unity商店上还有另一个版本可用的原因。不确定为什么我在这里被投票否决了。 - Atra Viator
1
它上面写着“免费”,也许他们改变了政策。 - Adam K Dean
1
这不是一个答案。如果您想要插入产品,请至少解释为什么NuGet包不兼容。 - Jody Sowald

0

如果你通过IDE添加了对*.dll的引用,然后重新编译时IDE抛出异常,请检查是否有程序集定义。如果有,则需要将其添加到程序集引用中。这对我很有效。检查员


-5

你需要将dll添加到你的项目引用中。

引用 >> 添加引用。


如果我这样做,就会收到消息,说明已经存在对Newtonsoft.json的引用,并且Newtonsoft已经在引用列表中。 - KonfuPanda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接