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

Untiy Json和Xml的序列化和反序列化

這篇具有很好參考價(jià)值的文章主要介紹了Untiy Json和Xml的序列化和反序列化。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Json的序列化和反序列化

1.定義數(shù)據(jù)類

[Serializable]
public class ZoomPoint
{
    // 點(diǎn)名稱, 將作為Key被字典存儲(chǔ)
    public string name;

    // 軸心X坐標(biāo)
    public Vector2 pivot = Vector2.one / 2;

    // 放大倍率,小于1是為縮小倍率,小于0是取絕對(duì)值,不允許原點(diǎn)對(duì)稱縮放,需要保證計(jì)算軸心邏輯正確
    // 默認(rèn)設(shè)為1.5f 放大倍率
    public float zoomMagnification = 5f;

    // 改變的需要的時(shí)間,默認(rèn)設(shè)為1f
    public float time = 1.0f;

    public override string ToString()
    {
        return $"name = {this.name}, pivot = ({pivot.ToString()}), zoomMagnification = {this.zoomMagnification}, time = {this.time}";
    }
}

2. 定義Json存儲(chǔ)類

// 數(shù)據(jù)存儲(chǔ)接受類
[Serializable]
public class Data{
    // public ZoomPoint[] zoomPoints;
    // public Dictionary<string, ZoomPoint> zoomPoints;
    public List<ZoomPoint> zoomPoints;
}

3.序列化

// 寫(xiě)入數(shù)據(jù)
public void WriteDataTest(){
    Data data = new()
    {
        zoomPoints = new List<ZoomPoint>()
    };

    ZoomPoint point1 = new ZoomPoint
    {
        name = "1",
        pivot = new Vector2(0.75f,0.75f)
    };
    ZoomPoint point2 = new ZoomPoint
    {
        name = "2",
        pivot = new Vector2(0.5f,0.5f)
        
    };

    data.zoomPoints[0] = point1;
    data.zoomPoints[1] = point2;

    string js = JsonUtility.ToJson(data);

    // 獲取項(xiàng)目路徑
    string fileUrl;
    if(filePath == ""){
        fileUrl = Application.streamingAssetsPath + jsonFileName;
    }else{
        fileUrl = filePath;
    }
    
    using(StreamWriter sw  = new StreamWriter(fileUrl))
    {   
        sw.WriteLine(js); //保存數(shù)據(jù)
        sw.Close(); 
        sw.Dispose();
    }
} 

4.反序列化

 public Data ReadData(){
            // 獲取文件路徑
            string fileUrl;
            if(filePath == ""){
                fileUrl = Application.streamingAssetsPath + jsonFileName;
            }else{
                fileUrl = filePath;
            }
            
            //讀取文件
            string readDate;
            using (StreamReader sr = File.OpenText(fileUrl)){
                readDate = sr.ReadLine();
                sr.Close();
            }

            Data data = JsonUtility.FromJson<Data>(readDate);

            // 分配內(nèi)存
            if(data == null ){
                data = new Data() {
                    zoomPoints = new List<ZoomPoint>()
                };
                return data;
            }

            // 數(shù)據(jù)保存到字典里
            foreach(ZoomPoint zp  in data.zoomPoints){
                dict.TryAdd(zp.name, zp);
            }
            return data;
        }

數(shù)據(jù)存儲(chǔ)效果:

Untiy Json和Xml的序列化和反序列化,json,xml


Ps: Unity C# Json 序列化換行

在ToJson中使用兩個(gè)參數(shù),第二個(gè)參數(shù)PrettyPrint 輸入True
private void JsonText() {
    Node node = new Node() {
        name = "Node_01",
        pos = new(0, 0)
    };

    string filePath = Application.streamingAssetsPath + "/Json_01.json";
    string str = JsonUtility.ToJson(node, true);

    using (StreamWriter sw = new StreamWriter(filePath)) {
        sw.WriteLine(str); // 保存數(shù)據(jù)
        sw.Close(); // 關(guān)閉文檔
        sw.Dispose();
    }

    Debug.Log(str);

    Grid grid = new() {
        nodes = new List<Node>()
    };
    Node node1 = new Node() {
        name = "Node_01",
        pos = new Vector2(0, 0)
    };
    Node node2 = new Node() {
        name = "Node_02",
        pos = new Vector2(0,1)
    };

    grid.nodes.Add(node1);
    grid.nodes.Add(node2);

    string filePath_01 = Application.streamingAssetsPath + "/Json_02.json";
    string str_01 = JsonUtility.ToJson(grid, true);

    using (StreamWriter sw = new StreamWriter(filePath_01)) {
        sw.WriteLine(str_01); // 保存數(shù)據(jù)
        sw.Close(); // 關(guān)閉文檔
        sw.Dispose();
    }

    Debug.Log("數(shù)據(jù)序列化完成");
}


[Serializable]
public class Node {
    public string name;
    public Vector2 pos;
}

[Serializable]
public class Grid {
    public List<Node> nodes;
}

效果:

Untiy Json和Xml的序列化和反序列化,json,xml

Untiy Json和Xml的序列化和反序列化,json,xml


Xml的序列化和反序列化

1.定義數(shù)據(jù)類

public class XmlText {
    public string name;
    public string value;

    public List<int> list;
    public override string ToString() {
        return $"name = {name}, value = {value}, list = {list}";
    }
}

2.序列化

引用:

using System.Io;
using System.Xml.Serialization;
public void Init() {
    test = new XmlText() {
        name = "Xml測(cè)試",
        value = "value",
        list = new List<int>()
    };

    test.list.Add(1);
    test.list.Add(3);
    test.list.Add(100);

}
 // 序列化Xml
public void XmlSerialize() {
    // 定義流文件
    FileStream fileStream = new FileStream(Application.streamingAssetsPath + "/text.xml",FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
    // 定義寫(xiě)入流
    StreamWriter sw = new StreamWriter(fileStream, System.Text.Encoding.UTF8);
    // 位于System.Xml.Serialization 中的Xml序列化
    XmlSerializer xml = new XmlSerializer(test.GetType());

    // 將類序列化寫(xiě)入流中
    xml.Serialize(sw, test);
    // 關(guān)閉流
    sw.Close();
    fileStream.Close();
}

3.反序列化

public XmlText Deserialize() {
    // 流文件
    FileStream fs = new FileStream(Application.streamingAssetsPath + "/text.xml", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
    // 定義序列化類
    XmlSerializer xml = new XmlSerializer(typeof(XmlText));
    // 反向序列化
    XmlText result = (XmlText)xml.Deserialize(fs);
    fs.Close();

    return result;

}

結(jié)果:

Untiy Json和Xml的序列化和反序列化,json,xml文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-639921.html

到了這里,關(guān)于Untiy Json和Xml的序列化和反序列化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ASP.NET中JSON的序列化和反序列化

    ? JSON是專門為瀏覽器中的網(wǎng)頁(yè)上運(yùn)行的JavaScript代碼而設(shè)計(jì)的一種數(shù)據(jù)格式。在網(wǎng)站應(yīng)用中使用JSON的場(chǎng)景越來(lái)越多,本文介紹ASP.NET中JSON的序列化和反序列化,主要對(duì)JSON的簡(jiǎn)單介紹,ASP.NET如何序列化和反序列化的處理,在序列化和反序列化對(duì)日期時(shí)間、集合、字典的處理。

    2024年02月15日
    瀏覽(21)
  • 【探索Linux】P.30(序列化和反序列化 | JSON序列化庫(kù) [ C++ ] )

    【探索Linux】P.30(序列化和反序列化 | JSON序列化庫(kù) [ C++ ] )

    當(dāng)談到網(wǎng)絡(luò)編程時(shí),序列化和反序列化是非常重要的概念。在上一篇文章中,我們已經(jīng)了解了在Linux環(huán)境下實(shí)現(xiàn)簡(jiǎn)單的TCP網(wǎng)絡(luò)程序的基礎(chǔ)知識(shí)。本文將繼續(xù)探討序列化和反序列化,這些概念對(duì)于在網(wǎng)絡(luò)上傳輸數(shù)據(jù)以及跨網(wǎng)絡(luò)通信至關(guān)重要。通過(guò)深入了解序列化和反序列化,我

    2024年04月08日
    瀏覽(34)
  • Spring Boot 中使用 ObjectMapper 進(jìn)行 JSON 序列化和反序列化

    在 Java 中,可以使用各種 JSON 序列化和反序列化工具將 Java 對(duì)象轉(zhuǎn)換為 JSON 字符串或者將 JSON 字符串轉(zhuǎn)換為 Java 對(duì)象。其中,Jackson 庫(kù)是比較常用的 JSON 序列化和反序列化工具之一,它提供了 ObjectMapper 類,用于將 Java 對(duì)象轉(zhuǎn)換為 JSON 字符串,或者將 JSON 字符串轉(zhuǎn)換為 Java 對(duì)象

    2024年02月14日
    瀏覽(20)
  • C#: Json序列化和反序列化,集合為什么多出來(lái)一些元素?

    C#: Json序列化和反序列化,集合為什么多出來(lái)一些元素?

    如下面的例子,很容易看出問(wèn)題: 如果類本身的無(wú)參構(gòu)造函數(shù),?就添加了一些元素,序列化,再反序列化,會(huì)導(dǎo)致元素增加。 如果要避免,必須添加: new JsonSerializerSettings() { ObjectCreationHandling = ObjectCreationHandling.Replace }

    2024年02月10日
    瀏覽(20)
  • cJSON(C語(yǔ)言JSON)庫(kù)(適用于嵌入式序列化和反序列化)

    cJSON(C語(yǔ)言JSON)庫(kù)(適用于嵌入式序列化和反序列化)

    JSON與序列化和反序列化 JSON (JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,它以易于閱讀和編寫(xiě)的文本形式表示結(jié)構(gòu)化數(shù)據(jù)。JSON 格式廣泛用于將數(shù)據(jù)從一個(gè)應(yīng)用程序傳輸?shù)搅硪粋€(gè)應(yīng)用程序,特別是在Web應(yīng)用程序中,因?yàn)樗cJavaScript兼容,容易在客戶端和服務(wù)器之間進(jìn)

    2024年02月04日
    瀏覽(43)
  • 【Java萬(wàn)花筒】選擇最適合您的數(shù)據(jù)序列化格式:比較 Avro、Protocol Buffers、JSON、XML、MessagePack和BSON

    在當(dāng)今數(shù)據(jù)驅(qū)動(dòng)的世界中,高效地處理和傳輸數(shù)據(jù)變得至關(guān)重要。選擇合適的數(shù)據(jù)序列化格式對(duì)于數(shù)據(jù)存儲(chǔ)、通信和處理的性能至關(guān)重要。本文將介紹并比較幾種常用的數(shù)據(jù)序列化格式,包括Apache Avro、Protocol Buffers、JSON、XML、MessagePack和BSON。通過(guò)了解它們的概述、特點(diǎn)、應(yīng)用

    2024年02月20日
    瀏覽(19)
  • Unity XML3——XML序列化

    Unity XML3——XML序列化

    ? 序列化:把對(duì)象轉(zhuǎn)化為可傳輸?shù)淖止?jié)序列過(guò)程稱為序列化,就是把想要存儲(chǔ)的內(nèi)容轉(zhuǎn)換為字節(jié)序列用于存儲(chǔ)或傳遞 ??反序列化:把字節(jié)序列還原為對(duì)象的過(guò)程稱為反序列化,就是把存儲(chǔ)或收到的字節(jié)序列信息解析讀取出來(lái)使用 1.準(zhǔn)備數(shù)據(jù)結(jié)構(gòu) 2.進(jìn)行序列化 XmlSerializer:用

    2024年02月15日
    瀏覽(24)
  • c#示例-xml序列化和xml樹(shù)

    由于指針和引用類型的存在,在運(yùn)行中的程序中,數(shù)據(jù)不一定是整塊的。 可能東一塊西一塊散落在內(nèi)存的各個(gè)地方。 序列,是指連續(xù)且有序的一個(gè)整體。序列化就是把數(shù)據(jù)變?yōu)檫B續(xù)有序整體的過(guò)程。 經(jīng)過(guò)這樣處理后的數(shù)據(jù)就可以方便的進(jìn)行傳輸和儲(chǔ)存了。 xml是一種文本數(shù)據(jù)

    2024年02月16日
    瀏覽(22)
  • 安卓數(shù)據(jù)存儲(chǔ)補(bǔ)充:XML序列化

    序列化是將對(duì)象狀態(tài)轉(zhuǎn)換為可保存或傳輸?shù)母袷降倪^(guò)程。我們可以把對(duì)象序列化為不同的格式,比如說(shuō):JSon序列化、XML序列化、二進(jìn)制序列化等等,不同的形式適應(yīng)不同的業(yè)務(wù)需求。 把對(duì)象的成員變量轉(zhuǎn)化為XML格式,需要使用Xml序列化器(XmlSerializer類),序列化之后的對(duì)象

    2024年02月10日
    瀏覽(24)
  • 協(xié)議,序列化,反序列化,Json

    協(xié)議,序列化,反序列化,Json

    協(xié)議究竟是什么呢?首先得知道主機(jī)之間的網(wǎng)絡(luò)通信交互的是什么數(shù)據(jù),像平時(shí)使用聊天APP聊天可以清楚,用戶看到的不僅僅是聊天的文字,還能夠看到用戶的頭像昵稱等其他屬性。也就可以證明網(wǎng)絡(luò)通信不僅僅是交互字符串那么簡(jiǎn)單。事實(shí)上網(wǎng)絡(luò)通信還可能會(huì)通過(guò)一個(gè)結(jié)構(gòu)

    2024年02月13日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包