当前位置: 首页 > news >正文

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文件就好了

http://www.lryc.cn/news/155371.html

相关文章:

  • Mybatis 动态SQL – 使用choose标签动态生成条件语句
  • http接口自动化测试框架实现
  • Android逆向学习(三)vscode修改smali绕过vip
  • 代码随想录训练营第38天|62.不同路径,63.不同路径II
  • BlueStore BlueFS rocksdb 关联性梳理
  • PgSQL-并行查询系列-介绍[译]
  • Linux以系统服务的方式启动Kafka(其他服务同理)
  • 成都瀚网科技有限公司:抖店的评论会消失吗?
  • 优先级队列priority_queue以及仿函数的使用
  • java+ssm+mysql水费管理系统
  • 搭建最简单的SpringBoot项目
  • Windows系统手动重新生成性能计数器
  • go elsaticsearch demo
  • 小游戏分发平台如何以技术拓流?
  • 力扣|找出和所对应的两数的下标
  • 使用命令行创建仓库
  • ESLint 中的“ space-before-function-paren ”相关报错及其解决方案
  • docker常用中间件安装
  • Camunda 7.x 系列【44】修改流程实例
  • 无频闪护眼灯哪个好?什么是无频闪
  • css网格布局
  • Hadoop -HDFS常用操作指令
  • 代码随想录二刷day11
  • 系统架构技能之设计模式-工厂模式
  • Docker的基本组成和安装
  • 【python爬虫】15.Scrapy框架实战(热门职位爬取)
  • Apinto 网关 V0.14 版本发布,6 大插件更新!
  • 突破销售瓶颈:亚马逊卖家如何借力TikTok网红营销?
  • JavaWeb之Cookie的简单使用!!!
  • 16、Flink 的table api与sql之连接外部系统: 读写外部系统的连接器和格式以及Apache Hive示例(6)