• 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解析

    1. using Newtonsoft.Json;
    2. using System.Collections;
    3. using System.Collections.Generic;
    4. using UnityEngine;
    5. using UnityEngine.Events;
    6. using UnityEngine.Networking;
    7. public class Test : MonoBehaviour
    8. {
    9. void Start()
    10. {
    11. StartCoroutine(LoadJson(Application.streamingAssetsPath + "/QA.json",JsonHandle));
    12. }
    13. ///
    14. /// 处理Json数据
    15. ///
    16. void JsonHandle(string jsonData)
    17. {
    18. Debug.Log(jsonData);
    19. QAData qAData = JsonConvert.DeserializeObject(jsonData);
    20. Debug.Log(" 共有" + qAData.QA.Count + "题");
    21. foreach (var item in qAData.QA)
    22. {
    23. Debug.Log(item.index);
    24. Debug.Log(item.Q);
    25. Debug.Log(item.A);
    26. }
    27. }
    28. ///
    29. /// 读取Json数据
    30. ///
    31. ///
    32. ///
    33. ///
    34. IEnumerator LoadJson(string path,UnityAction<string> action = null)
    35. {
    36. // 提取Json文件
    37. UnityWebRequest www = UnityWebRequest.Get(path);
    38. yield return www.SendWebRequest();
    39. if (www.result == UnityWebRequest.Result.Success)
    40. {
    41. string jsonString = www.downloadHandler.text;
    42. action?.Invoke(jsonString);
    43. }
    44. else
    45. {
    46. Debug.Log("读取失败");
    47. }
    48. }
    49. }

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

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

  • 相关阅读:
    LLM在text2sql上的应用 | 京东云技术团队
    基于滑模预测控制的海底采矿车轨迹跟踪算法
    H5互动游戏推荐,适合和产品结合的小游戏
    银行竞争度-地级市HHI+CRn(2000-2022年)
    如何使用java调取支付宝沙箱实现模拟支付?
    使用 kubebuilder 创建并部署 k8s-operator
    【金九银十必问面试题】这应该是面试官最想听到的回答,Mysql如何解决幻读问题?
    Python闭包
    YUV数据格式
    Metabase学习教程:系统管理-2
  • 原文地址:https://blog.csdn.net/weixin_46711336/article/details/132616451