Proceso de análisis Json

1. Obtuve el banco de preguntas.

Analizar lo que se puede definir

1. Número de serie, utilizado para distinguir el número de preguntas. Cada pregunta tiene un número de serie único.

2. La pregunta es Q en la imagen de abajo.

3. Respuesta predeterminada , A en la imagen de abajo

 Después del análisis, puedo saber que hay tres campos, a saber, int index, string Q y string A.

2. Lanza los campos a la tabla de Excel.

 Escriba los campos en la primera línea y luego escriba los datos a continuación.

 3. Convierta Excel a archivos Json mediante algunas herramientas

Esto es lo que uso comúnmente, simplemente agregue Excel.    

Puede ver que el archivo Json generado se ve así

 Parece un poco desordenado, puedes usar la herramienta de formato para ajustarlo.

Esta es mi herramienta de formato de uso común.

Herramienta de formato y verificación JSON en línea (Be JSON)

 

 De esta manera, nuestras preguntas y respuestas preestablecidas se pueden distinguir claramente, y algunos pequeños ajustes también se pueden procesar directamente aquí.

 4. Cambie el archivo Json

Cree un nuevo texto txt, pegue todos los datos recién generados en el texto y cambie el sufijo a .json

Este es un archivo Json calificado

 5. Generar clase C#

Todavía en el sitio web, busque la clase de entidad Json a C#, coloque su archivo Json en ella y generará una clase C# para usted.

Crea una nueva clase QAData  en Unity y copia las generadas (las generadas suelen ser Root, cámbialas a tus propias clases).

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

 De esta forma se desmonta todo y el sistema de preguntas y respuestas sigue la misma idea.

 La ventaja de esto es que cuando necesita modificar el banco de preguntas externamente, no necesita volver a empaquetarlo, simplemente cambie el archivo Json directamente.

Supongo que te gusta

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