最优的手机网站建设,哪个网站做相册好,wordpress 优化版本,h5商城网站建站Json概述
Json是什么?
全称:JavaScript对象简谱(JavaScript Object Notation) Json是国际通用的一种轻量级的数据交换格式 主要在网络通讯中用于传输数据,或本地数据存储和读取 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率 我们一般使用Json文件来…Json概述
Json是什么?
全称:JavaScript对象简谱(JavaScript Object Notation) Json是国际通用的一种轻量级的数据交换格式 主要在网络通讯中用于传输数据,或本地数据存储和读取 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率 我们一般使用Json文件来记录和传输数据 Json文档就是使用Json格式配置填写的文档 后缀一般为.json 我们在游戏中可以把游戏数据按照Json的格式标准 存储在Json文档中,再将Json文档存储在硬盘上或者传输给远端 达到数据持久化或者数据传输的目的
Json文件格式
Json配置规则
用什么编辑Json文件?
只要能打开文档的软件都能打开Json文件 常用的一些编辑Json文件的方式 1、系统自带 – 记事本、写字板 2.通用文本编辑器 – Sublime Text等等 3.网页上的Json编辑器 注释
和C#中注释方式一致 1.双斜杠//注释内容 2.斜杠加星号/注释内容/ Json格式是一种键值对结构 语法规则 Json数据和类对象的对应关系 配置Json文档时的注意事项
1.如果数据表示对象那么最外层有大括号 2.一定是键值对形式 3.键一定是字符串格式 4.键值对用逗号分开 5.数组用[]包裹 6.对象用{}包裹
Excel转Json
Excel数据转Json数据
1.在百度或者Google搜索Excel转Json 2.选择在线转换的网站 比如:https://www.bejson.com/json/col2json/ 3.进行转换 4.保存Json格式的数据
C#读取存储Json文件
JsonUtlity
JsonUtlity序列化
JsonUtlity是什么? JsonUtlity 是Unity自带的用于解析Json的公共类 它可以 1.将内存中对象序列化为Json格式的字符串 2.将Json字符串反序列化为类对象
在文件中存读字符串 1、存储字符串到指定路径文件中 第一个参数填写的是存储的路径必须是存在的文件路径如果没有对应文件夹会报错 第二个参数填写的是存储的字符串内容
File.WriteAllText(Application.persistentDataPath /Test.json,chx);2、在指定路径文件中读取字符串
File.ReadAllText(Application.persistentDataPath /Test.json);使用JsonUtlity进行序列化
[System.Serializable]
public class Student
{public int age;public string name;public Student(int age, string name){this.age age;this.name name;}
}public class MrTang
{public string name;public int age;public bool sex;public float testF;public double testD;public int[] ids;public Listint ids2;public Dictionaryint, string dic;public Dictionarystring, string dic2;public Student s1;public ListStudent s2s;[SerializeField]private int privateI 1;[SerializeField]protected int protectedI 2;
}
序列化把内存中的数据 存储到硬盘上 方法: JsonUtility.ToJson(对象) 初始化数据
MrTang t new MrTang();
t.name 唐老狮;
t.age 18;
t.sex false;
t.testF 1.4f;
t.testD 1.4;t.ids new int[] { 1, 2, 3, 4 };
t.ids2 new Listint() { 1, 2, 3 };
t.dic new Dictionaryint, string() { { 1, 123 }, { 2, 234 } };
t.dic2 new Dictionarystring, string() { { 1, 123 }, { 2, 234 } };t.s1 null;//new Student(1, 小红);
t.s2s new ListStudent() { new Student(2, 小明), new Student(3, 小强) };
JsonUtility提供了现成的方法可以把类对象序列化为Json字符串
string jsonStr JsonUtility.ToJson(t);
File.WriteAllText(Application.persistentDataPath /MrTang.json,jsonStr);注意: 1.float序列化时看起来会有一些误差 2.自定义类需要加上序列化特性[System.Serializable] 3.想要序列化私有变量 需要加上特性[SerializeField] 4.JsonUtility不支持字典 5.JsonUtlity存储null对象不会是null 而是默认值的数据
JsonUtility反序列化
使用JsonUtlity进行反序列化 反序列化:把硬盘上的数据 读取到内存中 方法: JsonUtility.FromJson(字符串)
//读取文件中的Json字符串
jsonStr File.ReadAllText(Application.persistentDataPath /MrTang.json);
//使用Json字符串内容转换成类对象
MrTang t2 JsonUtility.FromJson(jsonStr,typeof(MrTang)) as MrTang;
MrTang t3 JsonUtility.FromJsonMrTang(jsonStr);注意: 如果Json中数据少了,读取到内存中类对象中时不会报错 注意事项 1、JsonUtility无法直接读取数据集合 若想要读取则将数据包裹到对象中如下
public class RoleData
{public ListRoleInfo list;
}[System.Serializable]
3 个引用
public class RoleInfo
{public int hp;public int speed;public int volume;public string resName;public int scale;
}
RoleData data JsonUtility.FromJsonRoleData(jsonStr);2、文本编码格式需要UTF-8不然无法加载 总结 1.必备知识点 —— File存读字符串的方法 ReadAllText和WriteAllText 2.JsonUtlity提供的序列化反序列化方法 ToJson 和 FromJson 3.自定义类需要加上序列化特性[System.Serializable] 4.私有保护成员 需要加上[SerializeField] 5.JsonUtlity不支持字典 6.JsonUtlity不能直接将数据反序列化为数据集合 7.Json文档编码格式必须是UTF-8
LitJson
LitJson序列化
LitJson是什么? 它是一个第三方库,用于处理Json的序列化和反序列化 LitJson是c#编写的,体积小、速度快、易于使用 它可以很容易的嵌入到我们的代码中 只需要将LitJson代码拷贝到工程中即可 获取LitJson 1.前往LitJson官网 2.通过官网前往GitHub获取最新版本代码 3.将代码拷贝到Unity工程中 即可开始使用LitJson 使用LitJson进行序列化 方法 JsonMapper.ToJson(对象)
public class Student2
{public int age;public string name;public Student2() { }public Student2(int age, string name){this.age age;this.name name;}
}public class MrTang2
{public string name;public int age;public bool sex;public float testF;public double testD;public int[] ids;public Listint ids2;//public Dictionaryint, string dic;public Dictionarystring, string dic2;public Student2 s1;public ListStudent2 s2s;private int privateI 1;protected int protectedI 2;
}
初始化
MrTang2 t new MrTang2();
t.name 唐老狮;
t.age 18;
t.sex true;
t.testF 1.4f;
t.testD 1.4;t.ids new int[] { 1, 2, 3, 4 };
t.ids2 new Listint() { 1, 2, 3 };
//t.dic new Dictionaryint, string() { { 1, 123 }, { 2, 234 } };
t.dic2 new Dictionarystring, string() { { 1, 123 }, { 2, 234 } };t.s1 null;//new Student(1, 小红);
t.s2s new ListStudent2() { new Student2(2, 小明), new Student2(3, 小强) };
序列化
string jsonStr JsonMapper.ToJson(t);
File.WriteAllText(Application.persistentDataPath /MrTang2.json,jsonStr);注意: 1.相对JsonUtlity不需要加特性 2.不能序列化私有变量 3.支持字典类型字典的键建议都是字符串因为Json的特点Json中的键会加上双引号。 4.需要引用LitJson命名空间 5.LitJson可以准确的保存null类型
LitJson反序列化
使用LitJson反序列化 方法: JsonMapper.ToObject(字符串)
jsonStr File.ReadAllText(Application.persistentDataPath /MrTang2.json);
//JsonData是LitJson提供的类对象 可以用键值对的形式去访问其中的内容
JsonData data JsonMapper.ToObject(jsonStr);
print(data[name]);
print(data[age]);
//通过泛型转换 更加的方便 建议使用这种方式
MrTang2 t2 JsonMapper.ToObjectMrTang2(jsonStr);注意: 1.类结构需要无参构造函数,否则反序列化时报错 2.字典虽然支持 但是键在使用为数值时会有问题 需要使用字符串类型 注意事项 1.LitJson可以直接读取数据集合 RoleInfo.json:
public class RoleInfo2
{public int hp;public int speed;public int volume;public string resName;public int scale;
}
//1
jsonStr File.ReadAllText(Application.streamingAssetsPath /RoleInfo.json);
RoleInfo2[] arr JsonMapper.ToObjectRoleInfo2[](jsonStr);
//2
ListRoleInfo2 list JsonMapper.ToObjectListRoleInfo2(jsonStr);
//3
jsonStr File.ReadAllText(Application.streamingAssetsPath /Dic.json);
Dictionarystring, int dicTest JsonMapper.ToObjectDictionarystring, int(jsonStr);
json数据最后一行加逗号报错
2.文本编码格式需要是UTF-8 不然无法加载 总结 1.LitJson提供的序列化反序列化方法 JsonMapper.ToJson和ToObject 2.LitJson无需加特性 3.LitJson不支持私有变量 4.LitJson支持字典序列化反序列化 5.LitJson可以直接将数据反序列化为数据集合 6.LitJson反序列化时 自定义类型需要无参构造 7.Json文档编码格式必须是UTF-8
JsonUtility和LitJson对比
JsonUtlity和LitJson相同点 1.他们都是用于Json的序列化反序列化 2.Json文档编码格式必须是UTF-8 3.都是通过静态类进行方法调用 JsonUtlity和LitJson不同点 1.JsonUtlity是Unity自带,LitJson是第三方需要引用命名空间 2.JsonUtlity使用时自定义类需要加特性,LitJson不需要 3.JsonUtlity支持私有变量(加特性),LitJson不支持 4.JsonUtlity不支持字典,LitJson支持(但是键只能是字符串) 5.JsonUtlity不能直接将数据反序列化为数据集合(数组字典),LitJson可以 6.JsonUtlity对自定义类不要求有无参构造,LitJson需要 7.JsonUtlity存储空对象时会存储默认值而不是null,LitJson会存null 如何选择两者 根据实际需求 建议使用LitJson 原因:LitJson不用加特性,支持字典,支持直接反序列化为数据集合,存储null更准确 文章转载自: http://www.morning.hsrch.cn.gov.cn.hsrch.cn http://www.morning.pmysp.cn.gov.cn.pmysp.cn http://www.morning.knmp.cn.gov.cn.knmp.cn http://www.morning.fcwxs.cn.gov.cn.fcwxs.cn http://www.morning.ylqpp.cn.gov.cn.ylqpp.cn http://www.morning.tkryt.cn.gov.cn.tkryt.cn http://www.morning.rdtq.cn.gov.cn.rdtq.cn http://www.morning.bpmnc.cn.gov.cn.bpmnc.cn http://www.morning.slpcl.cn.gov.cn.slpcl.cn http://www.morning.jmwrj.cn.gov.cn.jmwrj.cn http://www.morning.crfjj.cn.gov.cn.crfjj.cn http://www.morning.gbwfx.cn.gov.cn.gbwfx.cn http://www.morning.ygbq.cn.gov.cn.ygbq.cn http://www.morning.pbzgj.cn.gov.cn.pbzgj.cn http://www.morning.bqdpy.cn.gov.cn.bqdpy.cn http://www.morning.qggcc.cn.gov.cn.qggcc.cn http://www.morning.npmpn.cn.gov.cn.npmpn.cn http://www.morning.jncxr.cn.gov.cn.jncxr.cn http://www.morning.qdbcd.cn.gov.cn.qdbcd.cn http://www.morning.spwln.cn.gov.cn.spwln.cn http://www.morning.wjlnz.cn.gov.cn.wjlnz.cn http://www.morning.bmtyn.cn.gov.cn.bmtyn.cn http://www.morning.nwczt.cn.gov.cn.nwczt.cn http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn http://www.morning.pcqdf.cn.gov.cn.pcqdf.cn http://www.morning.nlkhr.cn.gov.cn.nlkhr.cn http://www.morning.mxxsq.cn.gov.cn.mxxsq.cn http://www.morning.jntdf.cn.gov.cn.jntdf.cn http://www.morning.tblbr.cn.gov.cn.tblbr.cn http://www.morning.dgckn.cn.gov.cn.dgckn.cn http://www.morning.xznrk.cn.gov.cn.xznrk.cn http://www.morning.kgkph.cn.gov.cn.kgkph.cn http://www.morning.aowuu.com.gov.cn.aowuu.com http://www.morning.mmtjk.cn.gov.cn.mmtjk.cn http://www.morning.qkqpy.cn.gov.cn.qkqpy.cn http://www.morning.wyctq.cn.gov.cn.wyctq.cn http://www.morning.bloao.com.gov.cn.bloao.com http://www.morning.ccphj.cn.gov.cn.ccphj.cn http://www.morning.wmqxt.cn.gov.cn.wmqxt.cn http://www.morning.ttkns.cn.gov.cn.ttkns.cn http://www.morning.ljzgf.cn.gov.cn.ljzgf.cn http://www.morning.pqjlp.cn.gov.cn.pqjlp.cn http://www.morning.gcqs.cn.gov.cn.gcqs.cn http://www.morning.ryywf.cn.gov.cn.ryywf.cn http://www.morning.mmosan.com.gov.cn.mmosan.com http://www.morning.yhgbd.cn.gov.cn.yhgbd.cn http://www.morning.nptls.cn.gov.cn.nptls.cn http://www.morning.dgpxp.cn.gov.cn.dgpxp.cn http://www.morning.lxlzm.cn.gov.cn.lxlzm.cn http://www.morning.hpmzs.cn.gov.cn.hpmzs.cn http://www.morning.cczrw.cn.gov.cn.cczrw.cn http://www.morning.btcgq.cn.gov.cn.btcgq.cn http://www.morning.xckqs.cn.gov.cn.xckqs.cn http://www.morning.youngbase.cn.gov.cn.youngbase.cn http://www.morning.spfh.cn.gov.cn.spfh.cn http://www.morning.gjfym.cn.gov.cn.gjfym.cn http://www.morning.dblfl.cn.gov.cn.dblfl.cn http://www.morning.qdxkn.cn.gov.cn.qdxkn.cn http://www.morning.wqhlj.cn.gov.cn.wqhlj.cn http://www.morning.qflcb.cn.gov.cn.qflcb.cn http://www.morning.mmynk.cn.gov.cn.mmynk.cn http://www.morning.dbbcq.cn.gov.cn.dbbcq.cn http://www.morning.pmnn.cn.gov.cn.pmnn.cn http://www.morning.zsyqg.cn.gov.cn.zsyqg.cn http://www.morning.jfjqs.cn.gov.cn.jfjqs.cn http://www.morning.xpqsk.cn.gov.cn.xpqsk.cn http://www.morning.srmdr.cn.gov.cn.srmdr.cn http://www.morning.mggwr.cn.gov.cn.mggwr.cn http://www.morning.psgbk.cn.gov.cn.psgbk.cn http://www.morning.lnrhk.cn.gov.cn.lnrhk.cn http://www.morning.sacxbs.cn.gov.cn.sacxbs.cn http://www.morning.kncrc.cn.gov.cn.kncrc.cn http://www.morning.yknsr.cn.gov.cn.yknsr.cn http://www.morning.dmwjl.cn.gov.cn.dmwjl.cn http://www.morning.jwrcz.cn.gov.cn.jwrcz.cn http://www.morning.clndl.cn.gov.cn.clndl.cn http://www.morning.jxwhr.cn.gov.cn.jxwhr.cn http://www.morning.qcdhg.cn.gov.cn.qcdhg.cn http://www.morning.brwp.cn.gov.cn.brwp.cn http://www.morning.cpljq.cn.gov.cn.cpljq.cn