C#中Json的使用

///创建并保存Json文件
    public void SaveToJson<T>(T t, string AssetPath)
    {
        //讲对象转化为Json字符串
        string JsonData = JsonMapper.ToJson(t);
        string filePath = Application.dataPath + AssetPath;

        if (!File.Exists(filePath))
        {
            FileStream f = File.Create(filePath);
            f.Close();
        }
        //打开文件流,create模式表示如果不存在则创建,如果存在则覆盖
        FileStream fs = File.Open(filePath, FileMode.Create);
        //创建StreamWriter
        StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
        //写入Json字符
        sw.Write(JsonData);
        //清空缓冲区,确保写入
        sw.Flush();
        //关闭StreamWriter
        sw.Close();
        //关闭文件流
        sw.Close();
    }
/// <summary>
    /// 读取Json文件封装方法
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="AssetPath"></param>
    /// <returns></returns>

    public T LoadFromJsonFile<T>(string AssetPath)
    {
        try
        {
            //要解析的Json文件路径
            string filePath = Application.dataPath + AssetPath;

            //解析路径中的Json
            T t = JsonMapper.ToObject<T>(File.ReadAllText(filePath));

            if (t == null)
            {
                Debug.Log("读取Json文件为空");
            }
            return t;
        }
        catch (Exception e)
        {
            Debug.Log(e);
            return default(T);
        }
    }

先上两个封装好了的方法:第一个是创建Json文件方法;第二个是读取Json文件方法。直接就可以使用,在其他类直接调用方法即可。
下面上使用的具体实例:先上创建Json文件的操作。首先可以根据自己的具体需求来创建保存数据的类。`

public class PrefabsName
{
    public string name;
    public int Num;
    public double GoldNum;
}

而且我们配置Json文件的时候不可能只配置一组数据,那样用Json就得不偿失了。那么我们还可以在创建一个类来保存每一组数据`

public class PrefabsNames
{
    public PrefabsName[] Json;
}

然后再根据需求在你感觉合适的地方把你的每组数据按照这个格式写进去

PrefabsName p1 = new PrefabsName() { name = "ZuanShi1", Num = 50, GoldNum = 2.49 };
        PrefabsName p2 = new PrefabsName() { name = "ZuanShi2", Num = 100, GoldNum = 4.9 };
        PrefabsName p3 = new PrefabsName() { name = "ZuanShi3", Num = 250, GoldNum = 9.9 };
        PrefabsName p4 = new PrefabsName() { name = "ZuanShi4", Num = 1000, GoldNum = 34.9 };
        PrefabsName p5 = new PrefabsName() { name = "Start1", Num = 500, GoldNum = 2.49 };
        PrefabsName p6 = new PrefabsName() { name = "Start2", Num = 1000, GoldNum = 4.9 };
        PrefabsName p7 = new PrefabsName() { name = "Start3", Num = 2500, GoldNum = 9.9 };
        PrefabsName p8 = new PrefabsName() { name = "Start4", Num = 5000, GoldNum = 34.9 };

        PrefabsNames pre = new PrefabsNames();
        pre.Json = new PrefabsName[] { p1, p2, p3, p4, p5, p6, p7, p8 };
        SaveWithJson.Instance.SaveToJson(pre, "/Jsons/pre.json");

最后调用的就是上面封装好的方法,第二个参数是要保存的路径。
下面是读取Json的使用方法:

pp = SaveWithJson.Instance.LoadFromJsonFile<PrefabsNames>("/Jsons/pre.json");
        for (int i = 0; i < pp.Json.Length; i++)
        {
            PrefabsName Pr = pp.Json[i];
            CreatPrefabs(Pr.name, Pr.Num, Pr.GoldNum);
        }

直接调用解析的方法,参数传Json文件的位置。因为之前已经定义了一个数组来保存每一组数据,那么我们继续用这个数组接收解析的所有数据,然后便利即可。

简单粗暴的方法!

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#,我们可以使用`Newtonsoft.Json`来进行JSON的序列化和反序列化,它是一个流行的JSON序列化库。 以下是一个简单的示例,说明如何使用`Newtonsoft.Json`将一个对象序列化为JSON字符串: ```csharp using Newtonsoft.Json; public class Person { public string Name { get; set; } public int Age { get; set; } } Person person = new Person { Name = "Tom", Age = 25 }; string json = JsonConvert.SerializeObject(person); Console.WriteLine(json); ``` 在上面的示例,我们定义了一个名为`Person`的类,它有两个属性:`Name`和`Age`。接着,我们创建了一个`Person`对象并将其序列化为JSON字符串,使用`JsonConvert.SerializeObject`方法实现。最后,我们将JSON字符串打印到控制台。 输出结果如下: ``` {"Name":"Tom","Age":25} ``` 反序列化JSON字符串也很简单。以下是一个示例,说明如何使用`Newtonsoft.Json`将JSON字符串反序列化为对象: ```csharp string json = @"{'Name':'Tom','Age':25}"; Person person = JsonConvert.DeserializeObject<Person>(json); Console.WriteLine("Name: " + person.Name); Console.WriteLine("Age: " + person.Age); ``` 在上面的示例,我们定义了一个名为`json`的字符串,它包含了一个`Person`对象的JSON表示。接着,我们使用`JsonConvert.DeserializeObject`方法将JSON字符串反序列化为`Person`对象。最后,我们打印了反序列化后的`Person`对象的属性。 输出结果如下: ``` Name: Tom Age: 25 ``` 需要注意的是,反序列化JSON字符串时,需要确保JSON字符串与要反序列化的对象类型匹配,否则会引发异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值