Unity5.3Json测试学习
来源:互联网 发布:网吧网络系统维护公司 编辑:程序博客网 时间:2024/04/28 12:33
一.unity5.3新增了生成json、解析json和重写json的api,这里简单下。
namespace UnityEngine{ //解析json用的工具类 public static class JsonUtility { // // 摘要: // /// // 通过一个json和一个指定的父节点类型,返回这个父节点类的实例 // /// // // 参数: // json: // json格式的string字符串 // // type: // 根结点类型 // // 返回结果: // /// // <pre name="code" class="csharp"><span style="white-space:pre"></span>根节点类的实例// /// [WrapperlessIcall] public static object FromJson(string json, Type type);
<span style="white-space:pre"></span>//上面的一个泛型方法 public static T FromJson<T>(string json); // // 摘要: // /// // 制定一个根结点类,重写以这个根结点为基础的json // /// // // 参数: // json: // 重写的json,即新的json字符串 // // objectToOverwrite: // 需要重写的根结点类实例 [WrapperlessIcall] public static void FromJsonOverwrite(string json, object objectToOverwrite); // // 摘要: // /// // 将一个根结点为obj的“类树”解析为json字符串 // /// // // 参数: // obj: // 根类 // // prettyPrint: // If true, format the output for readability. If false, format the output for minimum // size. Default is false. // // 返回结果: // /// // json字符串 // /// public static string ToJson(object obj); // // 摘要: // /// // 和上面一样,格式化是否格式化输出 // /// // // 参数: // obj: // The object to convert to JSON form. // // prettyPrint: // 如果是true,格式化输出,如果不是,以最省略形式输出,就是json文件就是一行,没有换行 // // 返回结果: // /// // The object's data in JSON format. // /// [WrapperlessIcall] public static string ToJson(object obj, bool prettyPrint); }}
二.示例程序
JsonClass.cs 用于构建类结构
using System;using System.Collections.Generic;using System.Linq;using System.Text;[Serializable]public class University{ public string UniversityName; //专业 public Specialty specialty; //专业代号}[Serializable]public class Specialty{ public string SpecialtyName; //人数 public int StudentCount; //学生 public Student student1; public Student student2; public Student student3;}[Serializable]public class Student{ //学生姓名 public string StudentName; //成绩 public int StudengScore;}
MyTestJson.cs 用于挂在GameObject中测试:
using UnityEngine;using System.Collections;public class MyTestJson : MonoBehaviour {// Use this for initializationvoid Start () { string json = writeJson(); Debug.Log(json); int firstStuNum = getFirstSpecialtyStuNums(); Debug.Log("第一个班级软加班有学生人数: " + firstStuNum + "个"); }// Update is called once per framevoid Update () {} //编写一个大学信息的json格式 public string writeJson() { University uni = new University(); uni.UniversityName = "qiongzhou"; uni.specialty = new Specialty() { SpecialtyName = "SoftWare", StudentCount = 2, }; uni.specialty.student1 = new Student() { StudentName = "蛋蛋君", StudengScore = 0 }; uni.specialty.student2 = new Student() { StudentName = "死羊君", StudengScore = 59 }; string json = JsonUtility.ToJson(uni); return json; } public int getFirstSpecialtyStuNums() { University uni = new University(); uni = JsonUtility.FromJson<University>(writeJson()); int num = uni.specialty.StudentCount; return num; }
测试结果:
--------------------------------------------------------------------------------------------------------------------------------------------------------------
再测试下重写json的
public static void FromJsonOverwrite(string json, object objectToOverwrite);方法
源代码:
<pre name="code" class="csharp">using UnityEngine;using System.Collections;public class MyTestJson : MonoBehaviour {// Use this for initializationvoid Start () { string json = writeJson(); }// Update is called once per framevoid Update () {} //编写一个大学信息的json格式 public string writeJson() { University uni = new University(); uni.UniversityName = "qiongzhou"; uni.specialty = new Specialty() { SpecialtyName = "SoftWare", StudentCount = 2, }; uni.specialty.student1 = new Student() { StudentName = "蛋蛋君", StudengScore = 0 }; uni.specialty.student2 = new Student() { StudentName = "死羊君", StudengScore = 59 }; string json = JsonUtility.ToJson(uni); Debug.Log(json); string newjson = writeJson2(); JsonUtility.FromJsonOverwrite(newjson, uni); Debug.Log("修改后的json :" + JsonUtility.ToJson(uni)); return json; } public string writeJson2() { University newuni = new University(); newuni.UniversityName = "HaiDa"; newuni.specialty = new Specialty() { SpecialtyName = "SoftWare", StudentCount = 3, }; newuni.specialty.student1 = new Student() { StudentName = "小鸟游", StudengScore = 10 }; newuni.specialty.student2 = new Student() { StudentName = "乱入君", StudengScore = 20 }; newuni.specialty.student3 = new Student() { StudentName = "凑数君", StudengScore = 30 }; return JsonUtility.ToJson(newuni); }}
测试结果:
<img src="http://img.blog.csdn.net/20151219021843376?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
从表面上看就是这样的,挺好用的,不用自己写格式化json了。恩恩
0 0
- Unity5.3Json测试学习
- 测试了一下Unity5.3自己带的json,不错
- Unity5.3 JSON的序列化
- Unity5.x 解析Json
- unity5.0AssetBundle学习
- UIGUI Unity5.x 学习
- unity5.3 场景烘焙
- unity5.3 场景烘焙
- unity5.3 VR开发
- Unity5.3加载场景
- Unity5.3官方VR教程重磅登场-系列6 VR真机测试和产品发布
- Unity5中的粒子缩放(附测试源码)
- 接口测试相关学习xml和json
- unity5.3 to unity5.4 网络部分修改
- json测试
- json测试
- Unity5.3 AssetBundleName批量赋值
- Unity5.3新Memory Profiler
- Linux SWAP 交换分区配置说明
- java 多线程 两种实现方式
- angular 双向绑定的实现原理
- python之类--socket
- memcpy的用法
- Unity5.3Json测试学习
- 【MFC】 Unicode下CString和char *之间的互相转换
- 吐槽java之《程序员的呐喊》读后总结
- Linux 中交换空间 (swap)应该分多大才好?
- maven
- 翻译英文技术文档
- wrapper | The nexus-webapp service is not installed - The specified service does not exist
- Oracle 12c 使用scott等普通用户的方法
- java 多线程 传参 并发处理