Processo de análise JSON

1. Tenho o banco de perguntas

Analise o que pode ser definido

1. Número de série, usado para distinguir o número de questões. Cada questão possui um número de série único.

2. A pergunta é Q na imagem abaixo

3. Resposta padrão , A na imagem abaixo

 Após análise, posso saber que existem três campos, nomeadamente índice int, string Q e string A.

2. Jogue os campos na tabela do Excel

 Escreva os campos na primeira linha e depois escreva os dados abaixo.

 3. Converta Excel em arquivos Json por meio de algumas ferramentas

Isso é o que eu normalmente uso, basta colocar o Excel nele.    

Você pode ver que o arquivo Json gerado se parece com isto

 Parece um pouco bagunçado, você pode usar a ferramenta de formatação para ajustá-lo.

Esta é minha ferramenta de formatação comumente usada

Ferramenta online de verificação e formatação JSON (Be JSON)

 

 Desta forma, as nossas perguntas e respostas predefinidas podem ser claramente distinguidas, e alguns pequenos ajustes também podem ser processados ​​diretamente aqui.

 4. Altere o arquivo Json

Crie um novo texto txt, cole todos os dados recém-gerados no texto e altere o sufixo para .json

Este é um arquivo Json qualificado

 5. Gere classe C#

Ainda no site agora, encontre a classe de entidade Json para C#, coloque seu arquivo Json nela e ele gerará uma classe C# para você.

Crie uma nova classe QAData  no Unity e copie as geradas (as geradas geralmente são Root, altere-as para suas próprias classes).

 6. Análise 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("读取失败");
        }
    }
}

 Dessa forma, tudo se desmonta e o sistema de perguntas e respostas segue a mesma ideia.

 A vantagem disso é que quando você precisar modificar o banco de questões externamente, não será necessário reempacotá-lo, apenas altere o arquivo Json diretamente.

Acho que você gosta

Origin blog.csdn.net/weixin_46711336/article/details/132616451
Recomendado
Clasificación