如何将数据从litJson保存文件添加到列表

本文关键字:保存文件 添加 列表 litJson 数据 | 更新日期: 2023-09-27 18:15:15

我要做的是将我保存在litjson文件中的数据添加到列表中,并以正确的格式。所以我可以稍后在游戏中将其称为图标。下面是代码,所以它应该很容易重新创建来测试我遇到的问题。

JsonIcons class:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
[System.Serializable]
public class JsonIcons {
    public string IconName;//Shows the icon Name in the list
    public int IconID;// Shows the Icon ID in the list
    public Sprite AssignIcon;
    public JsonIcons(string Name, int ID )
    {
        IconName = Name;
        IconID = ID;
    }
    public JsonIcons()
    {
    }
}

JsonTest class:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using LitJson;
using System.IO;
//This class that does the saving
public class JsonTest : MonoBehaviour {
    public List<JsonIcons> JIcon = new List<JsonIcons>();
    public JsonData JCD;
    protected JsonIcons KZ, TestTK;
    public void Start()
    {
        TestTK = new JsonIcons("Kagami", 40);
        KZ = new JsonIcons("Magic", 0);
        JIcon.Add(TestTK); //Add things to the list to be save
        JIcon.Add(KZ);
        JCD = JsonMapper.ToJson(JIcon);
        //This is where I saved the things inside the JIcon list to a Json file
        File.WriteAllText(Application.dataPath + "/JsonSaveTest.json", JCD.ToString());
        //Debug.Log(JCD);
    }
}

JsonReadTest class:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using LitJson;
public class JsonReadTest : MonoBehaviour {
    public List<JsonIcons> ReadSJ = new List<JsonIcons>();
    private string JString;
    public JsonData IconData;
    // Use this for initialization
    void Start () 
    {
        //Trying to get this file to load in the correct format inside the ReadSJ list
        JString = File.ReadAllText(Application.dataPath + "/JsonFiles/JsonSaveTest.json");
        IconData = JsonMapper.ToObject(JString);
    }
}

如何将数据从litJson保存文件添加到列表

您可以创建一个名为JsonIconList的类,它将只包含一个列表(顺便说一下,您应该将JsonIcons重命名为JsonIcon,因为它代表单个项目)。然后你可以很容易地用JsonMapper类对它进行反序列化。

另一种方法是有一个像这样的通用包装器类

[Serializable]
private class ListWrapper<T>
{
    public List<T> Items;
}

然后创建一个辅助方法

public static class JsonHelper
{
    public static List<T> ToList<T>(string json)
    {
        ListWrapper<T> wrapper = JsonMapper.ToObject<ListWrapper<T>>(json);
        return wrapper.Items;
    }
}

像这样使用

List<JsonIcon> icons = JsonHelper.ToList<JsonIcon>(jsonString);