斗斗金 2022-09-06 15:23 采纳率: 50%
浏览 84
已结题

unity json问题

问题是FromJson 我使用ToJson 写入都没有问题 但是只要读取就出问题
我写的代码如下
下面tojson 一点问题 skill也放在下面了
通过tosjon写入的文件也放下面了 写入都成功
我的问题是FromJson 我只要读取 就在

Skill jsonInfo = JsonUtility.FromJson<Skill>(text);
这行就提示我错误 我看了很多说明 修改了好几次 我实在无能为力了
请求大神帮我解决下 我需要如何修改  
但是请不要让我换其他json读取方式 我只想用JsonUtility 这个读取出来

public class tast : MonoBehaviour
{
    private void Start()
    {
         FromJson();
        //ToJson();
    }

    static void FromJson()
    {
        string path = Application.dataPath + "/ww.text";

        StreamReader streamReader = new StreamReader(path);
        string text = streamReader.ReadToEnd(); //全部读取
        Debug.Log(text);
        Skill jsonInfo = JsonUtility.FromJson<Skill>(text);
    }

    public void ToJson()
    {
        List<Skill> tt = new List<Skill>(); //建立list
        tt.Add(new Skill(1001, "天山神功", 100));
        tt.Add(new Skill(1002, "天山功", 90));
        tt.Add(new Skill(1003, "天神功", 80));
        tt.Add(new Skill(1004, "天山神", 70));
        tt.Add(new Skill(1005, "天功", 60));
        string path = Application.dataPath + "/ww.text"; //文件夹位置
        foreach (Skill aa in tt) 
        {
            string s = JsonUtility.ToJson(aa); 
            StreamWriter streamWriter = new StreamWriter(path, true); 
            streamWriter.Write(s); //写入
            streamWriter.Close();// 关闭
        }

    }
}

[Serializable]
public class Skill 
{
    public int id;
    public string name;
    public int age;

    public Skill(int id, string name, int age)
    {
        this.id = id;
        this.name = name;
        this.age = age;
    }
}



下面是我通过我自己的tojson 写入的ww.text文件 这个写入没问题 主要是读取 我读取不回来
{"id":1001,"name":"天山神功","age":100}{"id":1001,"name":"天山神功","age":100}{"id":1002,"name":"天山功","age":90}{"id":1003,"name":"天神功","age":80}{"id":1004,"name":"天山神","age":70}{"id":1005,"name":"天功","age":60}
  • 写回答

3条回答 默认 最新

  • 於黾 2022-09-06 15:30
    关注

    读不回来就对了
    因为你是循环的把好多次toJson的内容丢到同一个文件里去了
    那你读回来的时候也应该循环读,分别还原成原来的对象
    要么你整个生成一个json串写文件,就可以一下都读回来
    -=-=-
    说白了,你把好多个skill对象生成的string放到了一起,读的时候没区分,想直接把它们变成一个Skill,那变的成才怪
    我们不去纠结技术细节,你就当它是魔法
    你用魔法把许多人变成了青蛙
    现在你想把所有青蛙变回一个人,你觉得有可能吗

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月9日
  • 已采纳回答 9月6日
  • 创建了问题 9月6日

悬赏问题

  • ¥15 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加