国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity中Newtonsoft.Json的使用(一)

這篇具有很好參考價值的文章主要介紹了Unity中Newtonsoft.Json的使用(一)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1.介紹

1.1 什么是Json

1.2 Json和其他數(shù)據(jù)序列化方案對比

1.3 為什么選擇Newtonsoft.Json

2.安裝Newtonsoft.json

2.1 網(wǎng)上其他安裝方式

2.2 Unity下載匹配的版本

3.Newtonsoft.Json的使用

3.1 寫一個Json工具類進行序列化和反序列化

3.2 進行測試

簡單小結


1.介紹

1.1 什么是Json

Json全名為“JavaScript Object Notation”,直接翻譯過來就是“JavaScript 對象表示法”。

Json最初由道格拉斯·克羅克福德(Douglas Crockford)在2001年提出,并在RFC 4627中正式定義。它的設計之初是提供一種易于閱讀和編寫的數(shù)據(jù)交換格式,同時也易于機器解析和生成,用來作為XML的一種輕量級替代。

也就是說,Json并不屬于一種編程語言,而是一種輕量級的數(shù)據(jù)交換格式。它的語法是基于JavaScript的,學習JavaScript的同學可以無縫使用,且由于語法的簡單性,學習其他編程語言的同學也可以非常容易上手。

1.2 Json和其他數(shù)據(jù)序列化方案對比

除了Json,我們知道還有XML、Protobuf、二進制等序列化方式,接下來我們就來進行一下平行對比

序列化文件大小 可讀性 跨語言 跨平臺 性能 易用性 適用場景
XML 高,包含所有層級結構和信息 支持 支持 復雜,像Excel一樣逐節(jié)點查詢 配置文件、定義協(xié)議等
Json 較小 較高,所有數(shù)據(jù)以鍵值對形式儲存 支持 支持 較高 簡單 輕量級的數(shù)據(jù)存儲和網(wǎng)絡傳輸通信
Protobuf 低,不包含字段名等信息,且需要適用專門的工具進行反序列化 支持 支持 較復雜,需要自己定義Proto數(shù)據(jù)結構,但序列化反序列化過程簡單 高性能,低帶寬的網(wǎng)絡傳輸通信
二進制 極小 低,全是0和1二進制字節(jié) 不支持 不支持 極高 簡單 有加密需求的大規(guī)模網(wǎng)絡傳輸通信,數(shù)據(jù)存儲等

1.3 為什么選擇Newtonsoft.Json

Newtonsoft.Json(Json.NET)是.Net生態(tài)中最流行,使用最廣的JSON庫。Unity中常用的其他JSON工具,如System.Json、LitJson還有Unity自帶的Jsonutility,或多或少都存在一切缺陷,比如不支持復雜數(shù)據(jù)結構類型,移動端平臺不支持等。

相比其他的JSON工具,Newtonsoft.Json支持絕大多數(shù)平臺。有著最豐富的功能和API,不夸張的說,可以支持所有的數(shù)據(jù)結構類型,包括你自定義的數(shù)據(jù)結構類型,且序列化反序列化過程可定制。

與之相對的,Newtonsoft.Json的包體也會稍大,如果對包體的大小不追求極限的話,可以說Newtonsoft.Json就是你在Unity開發(fā)中使用Json的不二之選。

2.安裝Newtonsoft.json

首先在你的Unity中建個腳本,using一下Newtonsoft.Json的命名空間,如果可以引用,表示你的Unity版本已經(jīng)自帶了Newtonsoft.Json,請直接跳到第三部分Newtonsoft.json的使用中,如果不行,請繼續(xù)向下看

using Newtonsoft.Json;

2.1 網(wǎng)上其他安裝方式

網(wǎng)上很多教程都教你從Github下載.NET的Newtonsoft.Json,或者使用VS的Nuget包管理器進行安裝,這些教程大家都可以在網(wǎng)上找到。

但是Newtonsoft.Json有著非常多的版本,支持不同的.NET環(huán)境和不同平臺,且大部分都是不帶AOT庫的。你下載的庫可能在Unity編譯器和Windows下能正常使用,但是在移動端和主機端會遇到序列化失敗的問題。

筆者這就教你一招取巧的方法,直接讓Unity為我們下載好匹配的版本

2.2 Unity下載匹配的版本

找到你項目根路徑下的Packages目錄,Packages和你的Assets文件夾是同級的

unity newtonsoft,Unity第三方插件,unity,json

打開manifest.json,找到com.unity.collab-proxy,可以看到現(xiàn)在的版本號是2.0.1

unity newtonsoft,Unity第三方插件,unity,json

我們先去看一下剛才Packages目錄下的packages-lock.json,可以看到現(xiàn)在的版本是2.0.1,dependencies依賴項是空的

unity newtonsoft,Unity第三方插件,unity,json

接下來我們返回manifest.json,將com.unity.collab-proxy的版本號修改為1.15.4,像這樣

unity newtonsoft,Unity第三方插件,unity,json

返回Unity,就會彈出窗口重新生成packages了

unity newtonsoft,Unity第三方插件,unity,json

這時候我們再看下packages-lock.json文件,可以看到版本號已經(jīng)變?yōu)?.15.4了,且依賴里面多了Newtonsoft.Json

unity newtonsoft,Unity第三方插件,unity,json

去Library中看一下,可以看到已經(jīng)下載到包體了,且自帶AOT庫,支持所有的平臺

unity newtonsoft,Unity第三方插件,unity,json

這時候我們就可以在Unity中使用Newtonsoft.Json了

3.Newtonsoft.Json的使用

3.1 寫一個Json工具類進行序列化和反序列化

using Newtonsoft.Json;  //記得引用命名空間

public class JsonMgr
{
    public static string Serialize<T>(T t)
    {
        return JsonConvert.SerializeObject(t);
    }

    public static T DeSerialize <T>(string json)
    {
        return JsonConvert.DeserializeObject<T>(json);
    }
}

3.2 進行測試

建一個學生結構體,用來當測試的數(shù)據(jù)結構,包含學號,姓名,學習成績?nèi)齻€成員字段

public struct Student
{
    public int num;
    public string name;
    public Dictionary<string, int> scoreDic;
}

建一個測試類,我們新建個學生數(shù)據(jù)實例,就用大雄這小子舉個栗子吧,我們都知道大雄的成績不是很好哈~

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class JsonTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Student student = new Student()
        {
            num = 50,
            name = "野比大雄",
            scoreDic = new Dictionary<string, int>()
            {
                {"語文",10 },
                {"數(shù)學",5 },
                {"英語",8 },
            },
        };

        string json = JsonMgr.Serialize(student);
        Debug.Log(json);

        Student newStudent = JsonMgr.DeSerialize<Student>(json);
        Debug.Log(newStudent.num);
        Debug.Log(newStudent.name);
        Debug.Log(newStudent.scoreDic["語文"]);
    }
}

看一下輸出,可以看到序列化和反序列化都沒什么問題

unity newtonsoft,Unity第三方插件,unity,json

簡單小結

怎么樣呢,用起來是不是很簡單,大家也可以自己用一些復雜數(shù)據(jù)結構試試。需要注意的是,默認情況下,數(shù)據(jù)中的非公共字段,如Private、Protected等訪問修飾符修飾的字段是不會被序列化的。

下一節(jié),我將教大家一些Newtonsoft.Json序列化反序列時的自定義設置:

Unity中Newtonsoft.Json的使用(二)文章來源地址http://www.zghlxwxcb.cn/news/detail-845671.html

到了這里,關于Unity中Newtonsoft.Json的使用(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Unity 數(shù)據(jù)讀取|(四)Json文件解析(Newtonsoft.Json ,Litjson,JsonUtility,SimpleJSON)

    JSON文件是一種純文本文件,用于存儲數(shù)據(jù),并且是基于JavaScript的一個子集。JSON文件通常用于存儲和傳輸數(shù)據(jù),以及在應用程序之間交換信息。它們以鍵值對的形式存儲數(shù)據(jù),其中鍵是字符串,值可以是字符串、數(shù)字、布爾值、數(shù)組、對象或null。 JSON文件通常具有.json擴展名

    2024年02月05日
    瀏覽(19)
  • 使用Newtonsoft直接讀取Json格式文本(Linq to Json)

    使用 Newtonsoft.Json(通常簡稱為 Newtonsoft)可以輕松地處理 JSON 格式的文本。Newtonsoft.Json 是 .NET 中一個流行的 JSON 處理庫,它提供了豐富的功能和靈活性。 以下是使用 Newtonsoft.Json 進行 Linq to JSON 的示例代碼: 首先,你需要在項目中安裝 Newtonsoft.Json 包。你可以通過 NuGet 包管理

    2024年02月16日
    瀏覽(24)
  • CYQ.Data 操作 Json 性能測試:對比 Newtonsoft.Json

    CYQ.Data 操作 Json 性能測試:對比 Newtonsoft.Json

    在 CYQ.Data?版本更新的這么多年,中間過程的版本都在完善各種功能。 基于需要支持或兼容的代碼越多,很多時候,常規(guī)思維,都把相關功能完成,就結束了。 實現(xiàn)過程中,無法避免的會用到大量的反射、鎖等對性能有所影響的邏輯代碼。 CYQ.Data?從V5.9?版本開始,開始大規(guī)

    2024年03月18日
    瀏覽(25)
  • C# Newtonsoft.Json解析json到自定義實體類

    使用Newtonsoft.Json解析json到自定義實體類也很方便,關鍵點在于實體類定義屬性的時候加上JsonProperty標簽。最簡單的一種形式可以形如這樣: JsonProperty后面括弧里的字串即代表json中對應的屬性名稱。通過這種方式即可關聯(lián)json屬性和實體類屬性。 調(diào)用的時候也很簡單, 這樣就

    2024年02月20日
    瀏覽(20)
  • Newtonsoft.Json/Json.NET忽略序列化時的意外錯誤

    在.NET中Newtonsoft.Json(Json.NET)是我們常用來進行Json序列化與反序列化的庫。 而在使用中常會遇到反序列化Json時,遇到不規(guī)則的Json數(shù)據(jù)解構而拋出異常。 Newtonsoft.Json?支持序列化和反序列化過程中的錯誤處理。 允許您捕獲錯誤并選擇是處理它并繼續(xù)序列化,還是讓錯誤冒泡并拋

    2024年03月21日
    瀏覽(19)
  • 【第三方SDK接入?yún)R總】Unity接入VuforiaAR(圖片識別)

    【第三方SDK接入?yún)R總】Unity接入VuforiaAR(圖片識別)

    目錄 一.注冊Vuforia賬號 二.獲取許可秘鑰 三.獲取Vuforia的SDK導入unity 四.搭建創(chuàng)建AR場景 五.打包到手機 注冊地址:Engine Developer Portal 申請地址:https://developer.vuforia.com/vui/develop/licenses 方式一:?官網(wǎng)下載 下載地址:SDK Download | Engine Developer Portal? 下載后把package包導入unity即可。

    2024年04月08日
    瀏覽(31)
  • unity 要怎么引用第三方庫,直接用useing不?

    在Unity中引用第三方庫的常見方法是使用 Assembly Definition Files(程序集定義文件) 。 這是一種Unity提供的機制,允許您創(chuàng)建自己的程序集,以便在Unity項目中引用和使用第三方庫。以下是一些簡單的步驟: 在Unity編輯器中,右鍵點擊您的Assets文件夾,選擇 Create ?? Assembly Defi

    2024年02月07日
    瀏覽(20)
  • 微信小程序第三方平臺uni-app配置ext.json(超詳細)

    微信小程序第三方平臺uni-app配置ext.json(超詳細)

    假如說,有多個業(yè)務,功能模式相同的公眾號/小程序,如果只是小程序開發(fā),那是不是需要復制多套代碼,改appid信息,在微信公眾號后臺,配置域名服務器以及密鑰等繁瑣的信息,每改一個提交發(fā)布一次,進行重復的步驟。隨著要維護的公眾號/小程序數(shù)量逐步增加,需要投

    2024年02月03日
    瀏覽(89)
  • Python第三方庫安裝——使用vscode、pycharm安裝Python第三方庫

    Python第三方庫安裝——使用vscode、pycharm安裝Python第三方庫

    在這里介紹vscode、Pycharm安裝python第三方庫的方法。 操作系統(tǒng):windows10 專業(yè)版 環(huán)境如下: Pycharm Comunity 2022.3 Visual Studio Code 2019 Python 3.8 pip:23.0.1 pycharm是一款很強大的、專用于寫python的ide。 小白式安裝第三方庫往往能給初學者一種 “高級感” ,而對于使用慣了Linux的人而言

    2024年02月03日
    瀏覽(118)
  • Vue第三方組件使用

    Vue第三方組件使用

    1、父組件與孩子組件傳值 在孩子組件中定義props屬性,里面定義好用于接收父親數(shù)據(jù)的變量。 孩子組件是Movie Movie.vue。注意看在Movie組件里面有props對象中的title和rating屬性用于父親使用。 在父親組件中使用孩子組件,使用時傳入?yún)?shù)。 比如我在App.vue里面使用孩子組件時如

    2024年04月10日
    瀏覽(294)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包