发布网友 发布时间:2022-05-06 03:15
共2个回答
懂视网 时间:2022-04-22 14:22
JSON是一种轻量级的数据交换格式。它基于 ECMAScript 的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。以下是转换的程序代码:
using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; using LitJson; using UnityEngine; using Excel; using Excel.Core; using OfficeOpenXml.Style; using OfficeOpenXml; /// <summary> /// 该class用于json的时候不能有构造函数 /// </summary> public class DataNode//自定义类来承接一会读出来的数据分类 { public string CopyName; public string CopyPosition; public string CopyRotation; } public class DataCenter//自定义类包含List列表来添加一会读取出来的的数据信息 { public List<DataNode> List; public DataCenter() { List =new List<DataNode>(); } } public class JsonConvert : MonoBehaviour { // Use this for initialization private string _txtPath;//TXT文件路径 private string _jsonPath;//转换后写入的json路径 private string _excelPath; void Start () { _jsonPath = Application.streamingAssetsPath + "/CopyInfo.json";//定义路径 _txtPath = Application.streamingAssetsPath + "/CopyInfo.txt"; _excelPath = Application.streamingAssetsPath + "/CopyInfo.json"; // Json的解析是很快的 网络 ReadTextToJson();//读取TXT文件并转化为Json ReadJsonFromJsonPath();//读取Json文件 WriteExcel(_excelPath); } // Update is called once per frame void Update () { } void ReadJsonFromJsonPath() { // 读取全部(文件路径) string jsondata = File.ReadAllText(_jsonPath); List<DataNode> node = JsonMapper.ToObject<List<DataNode>>(jsondata);//固定格式 Debug.LogError(node.Count); } void ReadTextToJson() { DataCenter dc = new DataCenter();//实例化dc,待会用其List //读文件固定格式 using (StreamReader reader = new StreamReader(_txtPath,Encoding.UTF8)) { string tmpStr = string.Empty; while ( !string.IsNullOrEmpty(tmpStr = reader.ReadLine())) { string[] infos = tmpStr.Split('_'); DataNode _node = new DataNode();//实例化调用其属性 _node.CopyName = infos[0];//把读取的内容赋值 _node.CopyPosition = infos[1]; _node.CopyRotation = infos[2]; dc.List.Add(_node);//把内容添加进列表 } } //数据读取完毕 开始写入json 传递的List<> string jsonData = JsonMapper.ToJson(dc.List); File.WriteAllText(_jsonPath,jsonData); } private void WriteExcel(string path) { DataCenter dc = new DataCenter();//实例化dc,待会用其List //读文件固定格式 using (StreamReader reader = new StreamReader(_txtPath, Encoding.UTF8)) { string tmpStr = string.Empty; while (!string.IsNullOrEmpty(tmpStr = reader.ReadLine())) { string[] infos = tmpStr.Split('_'); DataNode _node = new DataNode();//实例化调用其属性 _node.CopyName = infos[0];//把读取的内容赋值 _node.CopyPosition = infos[1]; _node.CopyRotation = infos[2]; dc.List.Add(_node);//把内容添加进列表 } } Debug.LogError(dc.List.Count); FileInfo excelInfo = new FileInfo(path); if (excelInfo.Exists) { excelInfo.Delete(); excelInfo = new FileInfo(path); } //开始使用 Excel using (ExcelPackage package = new ExcelPackage(excelInfo)) { ExcelWorksheet sheet = package.Workbook.Worksheets.Add("TestInfo"); // 添加了一个工作表 sheet.Cells[1, 1].Value = "CopyName"; sheet.Cells[1, 2].Value = "CopyPosition"; sheet.Cells[1, 3].Value = "CopyRotation"; for (int i = 0; i < dc.List.Count; i++) { sheet.Cells[2 + i, 1].Value = dc.List[i].CopyName; sheet.Cells[2 + i, 2].Value = dc.List[i].CopyPosition; sheet.Cells[2 + i, 3].Value = dc.List[i].CopyRotation; } sheet.Cells.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; sheet.Cells.Style.VerticalAlignment = ExcelVerticalAlignment.Center; sheet.Cells.Style.Font.Bold = true; sheet.Cells.Style.Font.Name = "宋体"; sheet.Cells.Style.Font.Size = 28; sheet.Cells.AutoFitColumns(50, 150); package.Save(); } } }
热心网友 时间:2022-04-22 11:30
用java往文件里面写入文字可以用到java里面的I/O流来实现功能, 一般都是用FileWriter类来实现要求。具体的代码示例如下: