在Unity中读写文件数据:LitJSON快速教程 - 王选易
2016-11-09 19:50
429 查看
作者:王选易,出处: http://www.cnblogs.com/neverdie/ 欢迎转载 ,也请保留这段声明。如果你喜欢这篇文章,请点【推荐】。谢谢!
QQ图片20140529123319
介绍
JSON是一个简单的,但功能强大的序列化数据格式。它定义了简单的类型,如布尔,数(int和float)和字符串,和几个数据结构:list和dictionnary。可以在 http://JSON.org 了解关于JSON的更多信息。
litjson是用C #编写的,它的目的是要小,快速,易用。它使用了Mono框架。
安装LitJSON
将LitJSON编译好的dll文件通过Import New Asset的方式导入到项目中,再使用Using LitJSON即可使用JSONMapper类中的简便方法。dll的下载地址在 这里 .
将JSON转化为Object并可逆向转化
为了在.Net程序中使用JSON格式的数据。一个自然的方法是使用JSON文本生成一个特定的类的一个新实例;为了匹配类的格式,一般存储的JSON字符串是一个字典。
另一方面,为了将对象序列化为JSON字符串,一个简单的导出操作,听起来是个好主意。
为了这个目的,LitJSON包引入了JsonMapper类,它提供了两个用于做到 JSON转化为object 和 object转化为JSON 的主要方法。这两个方法是jsonmapper.toobject和jsonmapper.tojson。
将object转化为字符串之后,我们就可以将这个字符串很方便地在文件中读取和写入了。
一个简单的JsonMapper的例子
在下面的例子中,ToObject方法有一个泛型参数,来指定返回的某种特定的数据类型:即JsonMapper.ToObject。
using LitJson;
using System;
public class Person
{
// C# 3.0 auto-implemented properties
public string Name { get; set; }
public int Age { get; set; }
public DateTime Birthday { get; set; }
}
public class JsonSample
{
public static void Main()
{
PersonToJson();
JsonToPerson();
}
}
上文的输出:
{“Name”:”William Shakespeare”,”Age”:51,”Birthday”:”04/26/1564 00:00:00”}
Thomas’ age: 57
使用非泛型的JsonMapper.ToObject
当不存在特定的JSON数据类时,它将返回一个JSONData实例。JSONData是一种通用型可以保存任何数据类型支持JSON,包括list和dictionary。
using LitJson;
using System;
public class JsonSample
{
public static void Main()
{
string json = @”
{
“”album”” : {
“”name”” : “”The Dark Side of the Moon”“,
“”artist”” : “”Pink Floyd”“,
“”year”” : 1973,
“”tracks”” : [
“”Speak To Me”“,
“”Breathe”“,
“”On The Run””
]
}
}
“;
}
上面例子的输出:
Reading data from the following JSON string:
{
“album” : {
“name” : “The Dark Side of the Moon”,
“artist” : “Pink Floyd”,
“year” : 1973,
“tracks” : [
“Speak To Me”,
“Breathe”,
“On The Run”
]
}
}
Album’s name: The Dark Side of the Moon
Recorded by Pink Floyd in 1973
First track: Speak To Me
Reader和Writer
一些人喜欢使用stream的方式处理JSON数据,对于他们, 我们提供的接口是jsonreader和jsonwriter。
JSONMapper实际上是建立在以上两个类的基础上的,所以你可以把这两个类当成是litJSON的底层接口。
使用JsonReader
using LitJson;
using System;
public class DataReader
{
public static void Main()
{
string sample = @”{
“”name”” : “”Bill”“,
“”age”” : 32,
“”awake”” : true,
“”n”” : 1994.0226,
“”note”” : [ “”life”“, “”is”“, “”but”“, “”a”“, “”dream”” ]
}”;
}
输出如下:
PropertyName name System.String
String Bill System.String
PropertyName age System.String
Int 32 System.Int32
PropertyName awake System.String
Boolean True System.Boolean
PropertyName n System.String
Double 1994.0226 System.Double
PropertyName note System.String
ArrayStart
String life System.String
String is System.String
String but System.String
String a System.String
String dream System.String
ArrayEnd
ObjectEnd
QQ图片20140529123319
介绍
JSON是一个简单的,但功能强大的序列化数据格式。它定义了简单的类型,如布尔,数(int和float)和字符串,和几个数据结构:list和dictionnary。可以在 http://JSON.org 了解关于JSON的更多信息。
litjson是用C #编写的,它的目的是要小,快速,易用。它使用了Mono框架。
安装LitJSON
将LitJSON编译好的dll文件通过Import New Asset的方式导入到项目中,再使用Using LitJSON即可使用JSONMapper类中的简便方法。dll的下载地址在 这里 .
将JSON转化为Object并可逆向转化
为了在.Net程序中使用JSON格式的数据。一个自然的方法是使用JSON文本生成一个特定的类的一个新实例;为了匹配类的格式,一般存储的JSON字符串是一个字典。
另一方面,为了将对象序列化为JSON字符串,一个简单的导出操作,听起来是个好主意。
为了这个目的,LitJSON包引入了JsonMapper类,它提供了两个用于做到 JSON转化为object 和 object转化为JSON 的主要方法。这两个方法是jsonmapper.toobject和jsonmapper.tojson。
将object转化为字符串之后,我们就可以将这个字符串很方便地在文件中读取和写入了。
一个简单的JsonMapper的例子
在下面的例子中,ToObject方法有一个泛型参数,来指定返回的某种特定的数据类型:即JsonMapper.ToObject。
using LitJson;
using System;
public class Person
{
// C# 3.0 auto-implemented properties
public string Name { get; set; }
public int Age { get; set; }
public DateTime Birthday { get; set; }
}
public class JsonSample
{
public static void Main()
{
PersonToJson();
JsonToPerson();
}
public static void PersonToJson() { Person bill = new Person(); bill.Name = "William Shakespeare"; bill.Age = 51; bill.Birthday = new DateTime(1564, 4, 26); string json_bill = JsonMapper.ToJson(bill); Console.WriteLine(json_bill); } public static void JsonToPerson() { string json = @" { ""Name"" : ""Thomas More"", ""Age"" : 57, ""Birthday"" : ""02/07/1478 00:00:00"" }"; Person thomas = JsonMapper.ToObject<Person>(json); Console.WriteLine("Thomas' age: {0}", thomas.Age); }
}
上文的输出:
{“Name”:”William Shakespeare”,”Age”:51,”Birthday”:”04/26/1564 00:00:00”}
Thomas’ age: 57
使用非泛型的JsonMapper.ToObject
当不存在特定的JSON数据类时,它将返回一个JSONData实例。JSONData是一种通用型可以保存任何数据类型支持JSON,包括list和dictionary。
using LitJson;
using System;
public class JsonSample
{
public static void Main()
{
string json = @”
{
“”album”” : {
“”name”” : “”The Dark Side of the Moon”“,
“”artist”” : “”Pink Floyd”“,
“”year”” : 1973,
“”tracks”” : [
“”Speak To Me”“,
“”Breathe”“,
“”On The Run””
]
}
}
“;
LoadAlbumData(json); } public static void LoadAlbumData(string json_text) { Console.WriteLine("Reading data from the following JSON string: {0}", json_text); JsonData data = JsonMapper.ToObject(json_text); // Dictionaries are accessed like a hash-table Console.WriteLine("Album's name: {0}", data["album"]["name"]); // Scalar elements stored in a JsonData instance can be cast to // their natural types string artist = (string) data["album"]["artist"]; int year = (int) data["album"]["year"]; Console.WriteLine("Recorded by {0} in {1}", artist, year); // Arrays are accessed like regular lists as well Console.WriteLine("First track: {0}", data["album"]["tracks"][0]); }
}
上面例子的输出:
Reading data from the following JSON string:
{
“album” : {
“name” : “The Dark Side of the Moon”,
“artist” : “Pink Floyd”,
“year” : 1973,
“tracks” : [
“Speak To Me”,
“Breathe”,
“On The Run”
]
}
}
Album’s name: The Dark Side of the Moon
Recorded by Pink Floyd in 1973
First track: Speak To Me
Reader和Writer
一些人喜欢使用stream的方式处理JSON数据,对于他们, 我们提供的接口是jsonreader和jsonwriter。
JSONMapper实际上是建立在以上两个类的基础上的,所以你可以把这两个类当成是litJSON的底层接口。
使用JsonReader
using LitJson;
using System;
public class DataReader
{
public static void Main()
{
string sample = @”{
“”name”” : “”Bill”“,
“”age”” : 32,
“”awake”” : true,
“”n”” : 1994.0226,
“”note”” : [ “”life”“, “”is”“, “”but”“, “”a”“, “”dream”” ]
}”;
PrintJson(sample); } public static void PrintJson(string json) { JsonReader reader = new JsonReader(json); Console.WriteLine ("{0,14} {1,10} {2,16}", "Token", "Value", "Type"); Console.WriteLine (new String ('-', 42)); // The Read() method returns false when there's nothing else to read while (reader.Read()) { string type = reader.Value != null ? reader.Value.GetType().ToString() : ""; Console.WriteLine("{0,14} {1,10} {2,16}", reader.Token, reader.Value, type); } }
}
输出如下:
Token Value Type
ObjectStartPropertyName name System.String
String Bill System.String
PropertyName age System.String
Int 32 System.Int32
PropertyName awake System.String
Boolean True System.Boolean
PropertyName n System.String
Double 1994.0226 System.Double
PropertyName note System.String
ArrayStart
String life System.String
String is System.String
String but System.String
String a System.String
String dream System.String
ArrayEnd
ObjectEnd
相关文章推荐
- 【Unity3D插件】在Unity中读写文件数据:LitJSON快速教程
- 【Unity3D插件】在Unity中读写文件数据:LitJSON快速教程
- 【Unity3D插件】在Unity中读写文件数据:LitJSON快速教程
- 【Unity3D插件】在Unity中读写文件数据:LitJSON快速教程 - 王选易
- Unity 读写Json数据:LitJSON快速教程
- Unity 读写Json数据:LitJSON快速教程
- Unity下关于C#的文件读写三(Json格式读写-基于LitJson简单认识)
- Unity下关于C#的文件读写(基于TXT和LitJson)
- Unity下关于C#的文件读写三(Json格式读写-基于LitJson简单认识)
- Unity下关于C#的文件读写三(Json格式读写-基于LitJson简单认识)
- Unity下关于C#的文件读写三(Json格式读写-基于LitJson简单认识)
- Unity下关于C#的文件读写三(Json格式读写-基于LitJson简单认识)
- [Unity](笔记)使用litJson读写Json数据
- Unity下关于C#的文件读写三(Json格式读写-基于LitJson简单认识)
- [Unity&JSON]LitJSON 读取数组文件,多个数据,玩家得分表数据
- Unity下关于C#的文件读写三(Json格式读写-基于LitJson简单认识)
- 【Unity&JSON】JSON数据怎么才能读写多个数据,并创建数组
- unity中从txt文件中读取解析json数据&&unity中json数据写入txt文件
- 【Unity&JSON】LitJson的多对象读写(4)
- 关于JSON数据的入门了解以及在java中简单的读写json文件