快速将网站seo,西安市网站建设,网站快速备案被退回的几种原因分析,免费下载app并安装Json的序列化和反序列化
1.定义数据类
[Serializable]
public class ZoomPoint
{// 点名称, 将作为Key被字典存储public string name;// 轴心X坐标public Vector2 pivot Vector2.one / 2;// 放大倍率#xff0c;小于1是为缩小倍率#xff0c;小于0是取绝对值#xff0c;不…Json的序列化和反序列化
1.定义数据类
[Serializable]
public class ZoomPoint
{// 点名称, 将作为Key被字典存储public string name;// 轴心X坐标public Vector2 pivot Vector2.one / 2;// 放大倍率小于1是为缩小倍率小于0是取绝对值不允许原点对称缩放,需要保证计算轴心逻辑正确// 默认设为1.5f 放大倍率public float zoomMagnification 5f;// 改变的需要的时间,默认设为1fpublic float time 1.0f;public override string ToString(){return $name {this.name}, pivot ({pivot.ToString()}), zoomMagnification {this.zoomMagnification}, time {this.time};}
}2. 定义Json存储类
// 数据存储接受类
[Serializable]
public class Data{// public ZoomPoint[] zoomPoints;// public Dictionarystring, ZoomPoint zoomPoints;public ListZoomPoint zoomPoints;
}3.序列化
// 写入数据
public void WriteDataTest(){Data data new(){zoomPoints new ListZoomPoint()};ZoomPoint point1 new ZoomPoint{name 1,pivot new Vector2(0.75f,0.75f)};ZoomPoint point2 new ZoomPoint{name 2,pivot new Vector2(0.5f,0.5f)};data.zoomPoints[0] point1;data.zoomPoints[1] point2;string js JsonUtility.ToJson(data);// 获取项目路径string fileUrl;if(filePath ){fileUrl Application.streamingAssetsPath jsonFileName;}else{fileUrl filePath;}using(StreamWriter sw new StreamWriter(fileUrl)){ sw.WriteLine(js); //保存数据sw.Close(); sw.Dispose();}
} 4.反序列化 public Data ReadData(){// 获取文件路径string fileUrl;if(filePath ){fileUrl Application.streamingAssetsPath jsonFileName;}else{fileUrl filePath;}//读取文件string readDate;using (StreamReader sr File.OpenText(fileUrl)){readDate sr.ReadLine();sr.Close();}Data data JsonUtility.FromJsonData(readDate);// 分配内存if(data null ){data new Data() {zoomPoints new ListZoomPoint()};return data;}// 数据保存到字典里foreach(ZoomPoint zp in data.zoomPoints){dict.TryAdd(zp.name, zp);}return data;}数据存储效果 Ps: Unity C# Json 序列化换行
在ToJson中使用两个参数第二个参数PrettyPrint 输入Trueprivate void JsonText() {Node node new Node() {name Node_01,pos new(0, 0)};string filePath Application.streamingAssetsPath /Json_01.json;string str JsonUtility.ToJson(node, true);using (StreamWriter sw new StreamWriter(filePath)) {sw.WriteLine(str); // 保存数据sw.Close(); // 关闭文档sw.Dispose();}Debug.Log(str);Grid grid new() {nodes new ListNode()};Node node1 new Node() {name Node_01,pos new Vector2(0, 0)};Node node2 new Node() {name Node_02,pos new Vector2(0,1)};grid.nodes.Add(node1);grid.nodes.Add(node2);string filePath_01 Application.streamingAssetsPath /Json_02.json;string str_01 JsonUtility.ToJson(grid, true);using (StreamWriter sw new StreamWriter(filePath_01)) {sw.WriteLine(str_01); // 保存数据sw.Close(); // 关闭文档sw.Dispose();}Debug.Log(数据序列化完成);
}[Serializable]
public class Node {public string name;public Vector2 pos;
}[Serializable]
public class Grid {public ListNode nodes;
}效果 Xml的序列化和反序列化
1.定义数据类
public class XmlText {public string name;public string value;public Listint list;public override string ToString() {return $name {name}, value {value}, list {list};}
}
2.序列化
public void Init() {test new XmlText() {name Xml测试,value value,list new Listint()};test.list.Add(1);test.list.Add(3);test.list.Add(100);}// 序列化Xml
public void XmlSerialize() {// 定义流文件FileStream fileStream new FileStream(Application.streamingAssetsPath /text.xml,FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);// 定义写入流StreamWriter sw new StreamWriter(fileStream, System.Text.Encoding.UTF8);// 位于System.Xml.Serialization 中的Xml序列化XmlSerializer xml new XmlSerializer(test.GetType());// 将类序列化写入流中xml.Serialize(sw, test);// 关闭流sw.Close();fileStream.Close();
}3.反序列化
public XmlText Deserialize() {// 流文件FileStream fs new FileStream(Application.streamingAssetsPath /text.xml, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);// 定义序列化类XmlSerializer xml new XmlSerializer(typeof(XmlText));// 反向序列化XmlText result (XmlText)xml.Deserialize(fs);fs.Close();return result;}结果: