Unity 的Newtonsoft往原有数据添加Json数据

由于Newtonsoft只提供了序列化和反序列化,所以,基本重新写入都是全部覆盖的,所以,要进行在原数据中添加数据的话那么就必须先反序列化,拿到原有的数据,存储起来,然后再增加数据,将其序列化回去,写Json读取通用类

先拿到原有数据 

List<GameObject> menuList = new List<GameObject>();
    public GameObject root;
    NameList NL;      //存储原有的数据
    // Start is called before the first frame update
    void Start()
    {
        string path = Application.dataPath + "/StreamingAssets/Data/" + "config.json";

        StreamReader sr = new StreamReader(path);
        string str = sr.ReadToEnd();
        sr.Close();
        NL = JsonConvert.DeserializeObject<NameList>(str);
        InstanceMenu(NL);
    }

 序列化包含原有数据的类,并且添加进去,再进行序列化

void WriteJson() {       
        EmployesItem EI = new EmployesItem();
        EI.keshi = "脑科";
        EI.zhuyuanhao = "1008";
        EI.bingchuang= "100号";
        EI.nianling = "18";
        EI.name = "王博";
        EI.xingbie = "男";
        EI.miaoshu = "百日咳";
        EI.zhenduan = "百日咳";
        EI.shuye = "鼻饲";
        Debug.Log(EI.keshi);
        NL.Employes.Add(EI);    //在原有数据中添加
        var jsonString = JsonConvert.SerializeObject(NL);  //重新序列化回去,覆盖原有的全部数据
        string file = Application.dataPath + "/StreamingAssets/Data/config.json";
        StreamWriter sw = new StreamWriter(file);
        sw.Write(jsonString);
        sw.Close();
    }

 快速读取,存储通用类型

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
using System.IO;

/// <summary>
/// josn的通用读写操作
/// </summary>
public class JsonWR : MonoBehaviour
{
    /// <summary>
    /// 读取Json的操作
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="path"></param>
    /// <returns></returns>
    public static T Read<T>(string path) {            
        StreamReader sr = new StreamReader(path);
        string str = sr.ReadToEnd();
        sr.Close();
        T t = JsonConvert.DeserializeObject<T>(str);
        return t;
    }

    /// <summary>
    /// 增加json的操作
    /// </summary>
    public static void Write<T>(T t,string Path) {

        var jsonString = JsonConvert.SerializeObject(t);  //重新序列化回去,覆盖原有的全部数据
        string file = Path;
        StreamWriter sw = new StreamWriter(file);
        sw.Write(jsonString);
        sw.Close();

    }
}

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一丁目赠我

谢谢你的打赏,感谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值