Json.NET is a popular high-performance JSON framework for .NET and the most used framework throughout the whole .NET ecosystem.
This repo is a fork of JamesNK/Newtonsoft.Json containing custom builds for regular standalone, but more importantly AOT targets such as all IL2CPP builds (WebGL, iOS, Android, Windows, Mac OS X) and portable .NET (UWP, WP8).
Since late February 2022, Unity has now published an updated version of their
package: com.unity.nuget.newtonsoft-json@3.0
Their package, since v2.0.0-preview.1, is a fork of this fork of Newtonsoft.Json. This is still true for their latest release of v3.0.1. This means that by switching over to their official package you will get:
The Newtonsoft.Json.Utilities.AotHelper
type I forked from SaladLab that has
been a core part of this fork since the get-go.
All my IL2CPP and managed code stripping specific bugfixes.
Continue to use an up-to-date fork of Newtonsoft.Json, but now kept up-to-date by Unity employees instead of me.
Also, it's practically always included in newer versions of Unity as many of Unity's internal packages depend on it, so you probably don't even have to install it any more!
I will continue to provide as much support as I can bare in my free time in the issues and discussions, however, please focus your support tickets towards https://forum.unity.com/, https://answers.unity.com/, and https://issuetracker.unity3d.com/.
To get started with their official package, you can follow my installation guide here:
Provides Newtonsoft.Json v10.0.3, v11.0.2, v12.0.3, and v13.0.1 alternatives.
Newtonsoft.Json-for-Unity.Converters package for converting Unity types, such as the Vector3, Quaternion, Color, and many, many more!
Full support for IL2CPP builds
Delivered via Unity Package Manager for easy updating and version switching
Full Newtonsoft.Json.Tests test suite passes on Unity 2018.4.14f1 and 2019.2.11f1 with Mono and IL2CPP as scripting backend.
Precompiled as DLLs for faster builds
Newtonsoft.Json.Utility.AotHelper utility class for resolving common Ahead-Of-Time issues. (Read more about AOT)
Yes. Now it is. Ever since Unity adopted this package since late February 2022 to provide an officially maintained Newtonsoft.Json package to the Unity ecosystem. ♥
My goal was before to be the most up-to-date fork of Newtonsoft.Json for Unity. Unity Technologies has now taken on this role.
This repository has completed its task: to provide Newtonsoft.Json. And is now that it's fully endorced by Unity themselves, I can happily deprecate this project like no other.
GUID [...] for assets '...' conflicts with: '...'
GUID [6c694cfdc33ae264fb33e0cd1c7e25cf] for asset 'Packages/jillejr.newtonsoft.json-for-unity/Plugins/Newtonsoft.Json AOT/Newtonsoft.Json.dll' conflicts with:
'Packages/com.unity.nuget.newtonsoft-json/Runtime/AOT/Newtonsoft.Json.dll' (current owner)
We can't assign a new GUID because the asset is in an immutable folder. The asset will be ignored.
This is because Unity's package, com.unity.nuget.newtonsoft-json
, and this
package exists in the project at the same time. This is not supported, and
there's no direct plans on making this work.
You have to sadly uninstall this package, jillejr.newtonsoft.json-for-unity
,
and rely completely on their package instead.
diff --git a/Packages/manifest.json b/Packages/manifest.json
index 49a3afa..f0edd27 100644
--- a/Packages/manifest.json
+++ b/Packages/manifest.json
@@ -18,7 +18,7 @@
"com.unity.collab-proxy": "1.2.16",
"com.unity.test-framework": "1.1.22",
"com.unity.ugui": "1.0.0",
- "jillejr.newtonsoft.json-for-unity": "13.0.102",
+ "com.unity.nuget.newtonsoft-json": "3.0.1",
"jillejr.newtonsoft.json-for-unity.converters": "1.0.0",
"com.unity.modules.ai": "1.0.0",
"com.unity.modules.androidjni": "1.0.0",
Read more: https://github.com/jilleJr/Newtonsoft.Json-for-Unity/issues/111#issuecomment-813319182
com.unity.nuget.newtonsoft-json
?I've tried so summarize it as best I can over at https://github.com/jilleJr/Newtonsoft.Json-for-Unity/issues/145
I've written documentation on installing the new officially adopted fork (of my fork) of Newtonsoft.Json, which can be found here: https://github.com/jilleJr/Newtonsoft.Json-for-Unity/wiki/Install-official-via-UPM
Installation via Package Installer (experimental)
Click here to download
Install-jillejr.newtonsoft.json-for-unity-13.0.102.unitypackage
Open the downloaded
.unitypackage
file in Unity. Easiestly done by drag'n'dropping the file into the Unity window.Click "Import" to import it all.
Once the installer has successfully compiled, it will add the correct UPM registry and package to your project, followed by removing itself.
The installer does not run until your project can successfully compile. Make sure to resolve all syntax- and other compiling errors, even just temporarily, so that the installer may execute.
Much love :heart: to @needle-tools for making such a great tool!
Installation via OpenUPM
openupm add jillejr.newtonsoft.json-for-unity
Full installation guide over at the wiki: Installation via OpenUPM
Much love :heart: to @favoyang for making such a great tool!
Installation via pure UPM
Full installation guide over at the wiki: Installation via pure UPM
Installation via Git in UPM
You can also install via Git. This assumes you have Git installed on your computer.
This is the least recommended version (but works as a fallback) because:
You will not be able to update the package via the Package Manager interface if you install via Git.
This requires you, your coworkers, and your CI/CD pipelines to have Git installed for the project to build.
It takes a lot longer to install as UPM will in most version clone the entire history of the project.
In later versions of Unity, you can import directly via the Package Manager interface.
Supply the following URL:
https://github.com/jilleJr/Newtonsoft.Json-for-Unity.git#upm
Full installation guide over at the wiki: Installation via Git in UPM
json.net
Thankful that you're even reading this :)
If you want to contribute, here's what you can do:
Spread the word! ❤ More users → more feedback → I get more will-power to work on this project. This is the best way to contribute!
Open an issue. Could be a feature request for a new converter, or maybe you've found a bug?
Tackle one of the unassigned issues. If it looks like a fun task to solve and no one is assigned, then just comment on it and say that you would like to try it out.
I realize that few of the issues are trivial, so if you wish to tackle something small then look at the list of unassigned issues over at the Unity converters package repoistory.
Open a PR with some new feature or issue solved. Remember to ask before starting to work on anything, so no two are working on the same thing.
Having a feature request or issue pop up and having the submitter suggesting themselves to later add a PR for a solution is the absolute greatest gift a repository maintainer could ever receive. 🎁
I have this CONTRIBUTING.md file that contains some guidelines. It may be good to read it beforehand.
These docs have been moved to ./ci/README.md.
All pull requests must comply with the remark styling rules found in the
.remarkrc
files within this repo. The .md
files are linted automatically
by Codacy, but to run them locally you must first install some prerequisites:
Install NPM
Install remark-cli
and some styling packages
# You may need to add "sudo"
npm install --global remark-cli
# Intentionally not globally
npm install remark-lint remark-preset-lint-markdown-style-guide remark-frontmatter
Then lint away! For example:
$ remark .github
.github/ISSUE_TEMPLATE/bug_report.md: no issues found
.github/ISSUE_TEMPLATE/feature_request.md: no issues found
.github/ISSUE_TEMPLATE/not-working-as-expected.md: no issues found
.github/ISSUE_TEMPLATE/question.md: no issues found
.github/PULL_REQUEST_TEMPLATE/code-update.md: no issues found
.github/PULL_REQUEST_TEMPLATE/docs-update.md: no issues found
Common enough occurrence that we have a wiki page for just this.
Read the Working with branches, section "Merging changes from JamesNKs repo" wiki page.
Most changes to this repo can be applied to all the different versions. For
example changes to the link.xml
or bugfixes in the IL2CPP hotfixes should
be applied to all the different versions, 10.0.3, 11.0.2, 12.0.3, etc.
This repo has a .backportrc.json
file that is used by the
sqren/backport CLI to make this easier. It
is a tool that basically just does git cherry-pick
, but with some other
features such as automatically create branches and PRs.
Install Node.js: https://nodejs.org/en/download/
Install the backport
CLI globally
npm install -g backport
Configure the backport
tool. It needs a GitHub access token and username
inside ~/.backport/config.json
.
More info here: https://github.com/sqren/backport/blob/master/docs/configuration.md#global-config-backportconfigjson
After a PR merge, checkout master
and pull the newly merged PR you want to
backport, then run the backport
CLI. It's interactive, so just follow the
steps.
git checkout master
git pull
# The tool is interactive. Choose the merge commit you want to backport
# and it takes care of the rest.
backport
This project, giving a stable Newtonsoft.Json experience to the Unity community, is a hobby project for me and will always stay free.
If this tool gave you something you value, consider giving a coin back into this tool. Sponsor me with a cup of coffee, I drink the cheap stuff! ☕
This package is licensed under The MIT License (MIT)
Copyright © 2019 Kalle Jillheden (jilleJr)
https://github.com/jilleJr/Newtonsoft.Json-for-Unity
See full copyrights in LICENSE.md inside repository