首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从litJson保存文件中添加数据到列表

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

Stack Overflow用户
提问于 2015-09-30 15:45:32
回答 1查看 1.3K关注 0票数 0

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

JsonIcons 类:

代码语言:javascript
复制
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 类:

代码语言:javascript
复制
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 类:

代码语言:javascript
复制
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);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2017-05-16 13:54:45

您可以创建一个名为JsonIconList的类,它只包含一个列表(通过将JsonIcons重命名为JsonIcon,因为它表示单个项)。然后,您可以使用JsonMapper类轻松地反序列化它。

另一种方法是拥有这样一个泛型包装类

代码语言:javascript
复制
[Serializable]
private class ListWrapper<T>
{
    public List<T> Items;
}

然后创建一个助手方法。

代码语言:javascript
复制
public static class JsonHelper
{
    public static List<T> ToList<T>(string json)
    {
        ListWrapper<T> wrapper = JsonMapper.ToObject<ListWrapper<T>>(json);
        return wrapper.Items;
    }
}

像这样使用它

代码语言:javascript
复制
List<JsonIcon> icons = JsonHelper.ToList<JsonIcon>(jsonString);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32870408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档