加了一个json读取的基类
This commit is contained in:
parent
3c1f269eb5
commit
2c416146ad
8
JsonRead.meta
Normal file
8
JsonRead.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a3626c36d2c3a2740b1b2305102cd551
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
65
JsonRead/JsonReadBase.cs
Normal file
65
JsonRead/JsonReadBase.cs
Normal file
@ -0,0 +1,65 @@
|
||||
using Newtonsoft.Json;
|
||||
using UnityEngine;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
|
||||
public class JsonReadBase : MonoBehaviour
|
||||
{
|
||||
/// <summary>
|
||||
/// 通用的JSON加载和解析方法
|
||||
/// </summary>
|
||||
/// <typeparam name="T">目标数据类型</typeparam>
|
||||
/// <param name="jsonFile">JSON文件的TextAsset</param>
|
||||
/// <returns>反序列化后的数据列表</returns>
|
||||
public List<T> LoadJson<T>(TextAsset jsonFile)
|
||||
{
|
||||
if (jsonFile == null)
|
||||
{
|
||||
Debug.LogError("JSON文件为空。请确保已正确分配。");
|
||||
return null;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
string jsonText = jsonFile.text.Trim();
|
||||
|
||||
// 确保JSON是数组格式
|
||||
if (!jsonText.StartsWith("["))
|
||||
{
|
||||
Debug.LogError("JSON格式错误:预期为数组。");
|
||||
return null;
|
||||
}
|
||||
|
||||
// 反序列化为列表
|
||||
List<T> dataList = JsonConvert.DeserializeObject<List<T>>(jsonText);
|
||||
Debug.Log($"成功从JSON数组中加载了 {dataList.Count} 个 {typeof(T).Name} 项目。");
|
||||
return dataList;
|
||||
}
|
||||
catch (JsonException ex)
|
||||
{
|
||||
Debug.LogError($"JSON反序列化错误: {ex.Message}");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通用的显示数据方法
|
||||
/// </summary>
|
||||
/// <typeparam name="T">数据类型</typeparam>
|
||||
/// <param name="dataList">数据列表</param>
|
||||
/// <param name="dataTypeName">数据类型名称,用于日志输出</param>
|
||||
public void DisplayData<T>(List<T> dataList)
|
||||
{
|
||||
if (dataList == null || dataList.Count == 0)
|
||||
{
|
||||
Debug.LogWarning($"没有数据可显示。");
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var item in dataList)
|
||||
{
|
||||
string jsonString = JsonConvert.SerializeObject(item, Formatting.Indented);
|
||||
Debug.Log($" {jsonString}");
|
||||
}
|
||||
}
|
||||
}
|
11
JsonRead/JsonReadBase.cs.meta
Normal file
11
JsonRead/JsonReadBase.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5845527e066da024a953facb81e5b284
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Loading…
Reference in New Issue
Block a user