JSON使用PreserveReferencesHandling保存引用类型

1.先创建两个对象Directory和File

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JSONDemo
{
    public class Directory
    {
        public string Name { get; set; }
        public Directory Parent { get; set; }
        public IList<File> Files { get; set; }
    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JSONDemo
{
    public class File
    {
        public string Name { get; set; }
        public Directory Parent { get; set; }
    }
}


2.序列化操作

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using GongHuiNewtonsoft.Json;

namespace JSONDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Directory root = new Directory { Name = "GongHuiRoot" };
            Directory documents = new Directory { Name = "GongHui's documents", Parent = root };

            File file = new File { Name = "GongHuiJSONDemo.sln", Parent = documents };

            documents.Files = new List<File> { file };

            Console.WriteLine("----属性引用其本身对象的时,抛出异常----");
            try
            {
                JsonConvert.SerializeObject(documents, Formatting.Indented);
            }
            catch (JsonSerializationException ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.WriteLine("----保存所有的引用类型----");
            string all = JsonConvert.SerializeObject(documents, Formatting.Indented, new JsonSerializerSettings
            {
                PreserveReferencesHandling = PreserveReferencesHandling.All
            });
            Console.WriteLine(all);

            Console.WriteLine("--------保存引用类型对象----");
            string obj = JsonConvert.SerializeObject(documents, Formatting.Indented, new JsonSerializerSettings
            {
                PreserveReferencesHandling = PreserveReferencesHandling.Objects
            });
            Console.WriteLine(obj);
        }
    }
}


3.运行后的结果

 

JSON源代码下载地址:http://download.csdn.net/detail/lovegonghui/9342751

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity中使用Newtonsoft.Json保存Vector类型需要进行以下步骤: 1. 首先,确保你已经在Unity项目中添加了Newtonsoft.Json库。你可以从Unity Asset Store或者Github上下载这个库。 2. 在你需要保存Vector的脚本中,首先引入Newtonsoft.Json命名空间。 ```c# using Newtonsoft.Json; ``` 3. 定义一个Vector类型的变量并给它赋值。 ```c# Vector3 vector = new Vector3(1, 2, 3); ``` 4. 使用JsonConvert.SerializeObject方法将Vector对象转换为JSON字符串。 ```c# string json = JsonConvert.SerializeObject(vector); ``` 5. 将生成的JSON字符串保存到文件中,你可以使用File.WriteAllText方法来实现。 ```c# string filePath = "vector.json"; File.WriteAllText(filePath, json); ``` 6. 如果需要加载保存的Vector,我们可以使用JsonConvert.DeserializeObject方法将JSON字符串转换回Vector对象。 ```c# string loadedJson = File.ReadAllText(filePath); Vector3 loadedVector = JsonConvert.DeserializeObject<Vector3>(loadedJson); ``` 这样,你就可以成功地使用Newtonsoft.Json保存和加载Vector类型了。 注意:在使用Newtonsoft.Json库时,需要确保你已经正确安装并添加了相关引用,以便能够引用正确的命名空间和方法。 ### 回答2: Unity可以使用Newtonsoft.Json保存Vector类型。Newtonsoft.Json是一个流行的JSON序列化和反序列化库,可以轻松地将对象转换为JSON格式并保存。 要保存Vector类型,首先需要安装Newtonsoft.Json库。您可以在Unity Asset Store或Newtonsoft官方网站上找到并下载该库。 安装完毕后,可以使用以下代码将Vector类型转换为JSON字符串并保存: ```csharp using UnityEngine; using Newtonsoft.Json; public class SaveManager : MonoBehaviour { private Vector2 savedVector; private void Start() { // 假设此处是要保存的Vector2 Vector2 vectorToSave = new Vector2(1f, 2f); // 将Vector2对象转换为JSON字符串 string jsonString = JsonConvert.SerializeObject(vectorToSave); // 保存JSON字符串到文件或其他位置 // 这里仅示范输出到控制台 Debug.Log(jsonString); // 反序列化JSON字符串为Vector2对象 savedVector = JsonConvert.DeserializeObject<Vector2>(jsonString); // 输出反序列化后的Vector2 Debug.Log(savedVector); } } ``` 在上面的示例中,我们使用JsonConvert.SerializeObject方法将Vector2对象转换为JSON字符串,并使用Debug.Log输出到控制台。我们还使用JsonConvert.DeserializeObject方法将JSON字符串反序列化为Vector2对象,并将其打印到控制台。 通过上述步骤,您可以使用Newtonsoft.Json保存Unity中的Vector类型。 ### 回答3: Unity是一款强大的游戏开发引擎,它提供了许多实用的功能来简化开发过程。其中一个重要的功能就是数据的序列化与反序列化。为了保存和加载Vector类型的数据,我们可以使用Newtonsoft.Json库。 首先,我们需要将Newtonsoft.Json库导入到Unity项目中。这可以通过在Unity Asset Store中下载并导入Newtonsoft.Json插件来完成。 接下来,在我们需要保存Vector类型数据的脚本中,我们需要引入Newtonsoft.Json命名空间。命名空间的引入可以通过以下代码实现: ```csharp using Newtonsoft.Json; ``` 然后,我们可以使用JsonConvert.SerializeObject方法将Vector类型数据转换为JSON字符串,并将其保存到文件中。下面是一个示例代码: ```csharp Vector3 vectorData = new Vector3(1.0f, 2.0f, 3.0f); string json = JsonConvert.SerializeObject(vectorData); File.WriteAllText("vectorData.json", json); ``` 上述代码将一个名为vectorData.json的文件保存到项目目录中。该文件中包含了Vector3类型的数据。 最后,如果我们想要加载保存的Vector类型数据,我们可以使用JsonConvert.DeserializeObject方法将JSON字符串转换回Vector类型。以下是一个示例代码: ```csharp string json = File.ReadAllText("vectorData.json"); Vector3 loadedVectorData = JsonConvert.DeserializeObject<Vector3>(json); ``` 上述代码将通过读取vectorData.json文件中的JSON字符串,并将其转换为Vector3类型的loadedVectorData变量。 使用Newtonsoft.Json保存和加载Vector类型数据是非常简单的。我们只需要导入库,将Vector类型数据转换为JSON字符串并保存,然后反过来将JSON字符串转换回Vector类型数据即可。这些步骤可以帮助我们在Unity中轻松地保存和加载Vector类型数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值