Json解析流程

一、拿到了题库

分析一下可以定义的

1、序号,用来区分题目数,每个题有唯一的序号

2、题目,就是下图的Q

3、预设的回答,下图的A

 分析完我可以知道有三个字段,分别是int index、string Q、string A。

二、把字段丢到Excel表格里

 第一行写字段,下面再写数据

 三、通过一些工具把Excel转化成Json文件

这个是我常用的,把Excel丢进去就好    

可以看到生成的Json文件是这样的

 看着稍微有点乱,可以用格式化工具调整一下

这是我常用的格式化工具

在线JSON校验格式化工具(Be JSON)

 

 这样就可以清晰分辨我们的题目和预设回答了,一些小调整也可以直接在这里处理

 四、改Json文件

新建一个txt文本,把刚刚生成的数据全部粘贴进文本里,并把后缀改成.json

这样就是一个合格的Json文件了

 五、生成C#类

还是刚刚那个网站,找到Json转C#实体类,把你的Json文件丢进去他就能帮你生成一个C#类

 在Unity里新建一个QAData类,复制这些生成的这些就好了(生成的一般都是Root,改成自己的类)。

 六、Json解析

using Newtonsoft.Json;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Networking;

public class Test : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(LoadJson(Application.streamingAssetsPath + "/QA.json",JsonHandle));
    }

    /// <summary>
    /// 处理Json数据
    /// </summary>
    void JsonHandle(string jsonData) 
    {
        Debug.Log(jsonData);
        QAData qAData = JsonConvert.DeserializeObject<QAData>(jsonData);

        Debug.Log(" 共有" + qAData.QA.Count + "题");
        foreach (var item in qAData.QA)
        {
            Debug.Log(item.index); 
            Debug.Log(item.Q); 
            Debug.Log(item.A);
        }
        
    }

    /// <summary>
    /// 读取Json数据
    /// </summary>
    /// <param name="path"></param>
    /// <param name="action"></param>
    /// <returns></returns>
    IEnumerator LoadJson(string path,UnityAction<string> action = null)
    {
        // 提取Json文件
        UnityWebRequest www = UnityWebRequest.Get(path);
        yield return www.SendWebRequest();

        if (www.result == UnityWebRequest.Result.Success)
        {
            string jsonString = www.downloadHandler.text;
            action?.Invoke(jsonString);
        }
        else
        {
            Debug.Log("读取失败");
        }
    }
}

 这样就全部拆出来了,答题系统也是一样的思路。

 这样做的好处是,当需要外部去修改题库时也无需重新打包,直接改Json文件就好了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值