Open alwaystest opened 8 years ago
标签(空格分隔): Unity3D JSON
在使用Unity3D来处理JSON的序列化与反序列化的时候,Unity官方提供了JsonUtility^footnote。据官方称,效率要比市面上的JSON处理插件高。但是我具体使用的时候发现JsonUtility反序列化需要使用泛型,必须有一个模板类,而且没有发现反序列化属性别名的方法, 为了方便开发,我选取了SimpleJSON来进行JSON字符串的处理。
SimpleJSON的这个页面提供了一个简单的Example,简单到都没有提供手动Add("key","value")的用法。我在讨论界面的Test类中找到了相关的用法,在页面的最底部。
Add("key","value")
Test
我个人比较喜欢Google Style的JSON风格
双引号 使用双引号 如果(某个)属性需要引号,则必须使用双引号。所有的属性名必须在双引号内。字符类型的属性值必须使用双引号。其它类型值(如布尔或数字)不应该使用双引号。
而SimpleJSON处理出来的JSON风格是把数字,布尔值也使用双引号的。
JAVA代码
System.out.println(obj);
这样的代码,如果传入的参数是任何一个非String类型的对象,会自动调用其toString(),将其转换为字符串。
String
toString()
而在C#中,有implicit这么一个神奇的东西,我简单的把他理解为和C++的操作符重载类似的东西。
implicit
SimpleJSON中有这么一段代码:
public static implicit operator string(JSONNode d) { return (d == null)?null:d.Value; } public static class JSON { public static JSONNode Parse(string aJSON) { return JSONNode.Parse(aJSON); } }
导致下面的代码会出现不同的结果
JSONArray arr = json ["hello"].AsArray; Debug.Log(JSON.Parse(arr[0])); Debug.Log(JSON.Parse(arr[0].ToString()));//JSONNode重写了ToString()方法,其实现和implicit不同。
Unity3D 处理JSON 之 SimpleJSON
标签(空格分隔): Unity3D JSON
简介
在使用Unity3D来处理JSON的序列化与反序列化的时候,Unity官方提供了JsonUtility^footnote。据官方称,效率要比市面上的JSON处理插件高。但是我具体使用的时候发现JsonUtility反序列化需要使用泛型,必须有一个模板类,而且没有发现反序列化属性别名的方法, 为了方便开发,我选取了SimpleJSON来进行JSON字符串的处理。
SimpleJSON的这个页面提供了一个简单的Example,简单到都没有提供手动
Add("key","value")
的用法。我在讨论界面的Test
类中找到了相关的用法,在页面的最底部。我个人比较喜欢Google Style的JSON风格
而SimpleJSON处理出来的JSON风格是把数字,布尔值也使用双引号的。
JAVA转C#的坑
JAVA代码
这样的代码,如果传入的参数是任何一个非
String
类型的对象,会自动调用其toString()
,将其转换为字符串。而在C#中,有
implicit
这么一个神奇的东西,我简单的把他理解为和C++的操作符重载类似的东西。SimpleJSON中有这么一段代码:
导致下面的代码会出现不同的结果