Unity3D LitJSON 插件使用教程
2015-04-29 10:02
513 查看
安装LitJSON
将LitJSON编译好的dll文件通过Import New Asset的方式导入到项目中,再使用Using LitJSON即可使用JSONMapper类中的简便方法。dll的下载地址:--pan.baidu.com///s///1bnrpVJp
将JSON转化为Object并可逆向转化
为了在.Net程序中使用JSON格式的数据。一个自然的方法是使用JSON文本生成一个特定的类的一个新实例;为了匹配类的格式,一般存储的JSON字符串是一个字典。另一方面,为了将对象序列化为JSON字符串,一个简单的导出操作,听起来是个好主意。
为了这个目的,LitJSON包引入了JsonMapper类,它提供了两个用于做到 JSON转化为object 和 object转化为JSON 的主要方法。这两个方法是jsonmapper.toobject和jsonmapper.tojson。
将object转化为字符串之后,我们就可以将这个字符串很方便地在文件中读取和写入了。
一个简单的JsonMapper的例子
在下面的例子中,ToObject方法有一个泛型参数,来指定返回的某种特定的数据类型:即JsonMapper.ToObject<T>。view
sourceprint?
01.
using LitJson;
02.
using System;
03.
04.
public
class
Person
05.
{
06.
// C# 3.0 auto-implemented properties
07.
public
string Name { get; set; }
08.
public
int
Age { get; set; }
09.
public
DateTime Birthday { get; set; }
10.
}
11.
12.
public
class
JsonSample
13.
{
14.
public
static
void
Main()
15.
{
16.
PersonToJson();
17.
JsonToPerson();
18.
}
19.
20.
public
static
void
PersonToJson()
21.
{
22.
Person bill =
new
Person();
23.
24.
bill.Name =
"William Shakespeare"
;
25.
bill.Age =
51
;
26.
bill.Birthday =
new
DateTime(
1564
,
4
,
26
);
27.
28.
string json_bill = JsonMapper.ToJson(bill);
29.
30.
Console.WriteLine(json_bill);
31.
}
32.
33.
public
static
void
JsonToPerson()
34.
{
35.
string json = @"
36.
{
37.
""
Name
""
:
""
Thomas More
""
,
38.
""
Age
""
:
57
,
39.
""
Birthday
""
:
""
02
/
07
/
1478
00
:
00
:
00
""
40.
}";
41.
42.
Person thomas = JsonMapper.ToObject<Person>(json);
43.
44.
Console.WriteLine(
"Thomas'
age:{0}"
,thomas.Age);
45.
}
46.
}
上文的输出:
view
sourceprint?
1.
{
"Name"
:
"William Shakespeare"
,
"Age"
:
51
,
"Birthday"
:
"04/26/1564 00:00:00"
}
2.
Thomas'
age:
57
使用非泛型的JsonMapper.ToObject
当不存在特定的JSON数据类时,它将返回一个JSONData实例。JSONData是一种通用型可以保存任何数据类型支持JSON,包括list和dictionary。view
sourceprint?
01.
using LitJson;
02.
using System;
03.
04.
public
class
JsonSample
05.
{
06.
public
static
void
Main()
07.
{
08.
string json = @"
09.
{
10.
""
album
""
: {
11.
""
name
""
:
""
The Dark Side of the Moon
""
,
12.
""
artist
""
:
""
Pink Floyd
""
,
13.
""
year
""
:
1973
,
14.
""
tracks
""
: [
15.
""
Speak To Me
""
,
16.
""
Breathe
""
,
17.
""
On The Run
""
18.
]
19.
}
20.
}
21.
";
22.
23.
LoadAlbumData(json);
24.
}
25.
26.
public
static
void
LoadAlbumData(string json_text)
27.
{
28.
Console.WriteLine(
"Reading data from the following JSON string:{0}"
,
29.
json_text);
30.
31.
JsonData data = JsonMapper.ToObject(json_text);
32.
33.
// Dictionaries are accessed like a hash-table
34.
Console.WriteLine(
"Album's
name:{0}"
,data[
"album"
][
"name"
]);
35.
36.
// Scalar elements stored in a JsonData instance can be cast to
37.
// their natural types
38.
string artist = (string) data[
"album"
][
"artist"
];
39.
int
year = (
int
) data[
"album"
][
"year"
];
40.
41.
Console.WriteLine(
"Recorded by {0} in {1}"
,artist,
year);
42.
43.
// Arrays are accessed like regular lists as well
44.
Console.WriteLine(
"First
track:{0}"
,data[
"album"
][
"tracks"
][
0
]);
45.
}
46.
}
上面例子的输出:
view
sourceprint?
01.
Reading data from the following JSON string:
02.
{
03.
"album"
: {
04.
"name"
:
"The Dark Side of the Moon"
,
05.
"artist"
:
"Pink Floyd"
,
06.
"year"
:
1973
,
07.
"tracks"
: [
08.
"Speak To Me"
,
09.
"Breathe"
,
10.
"On The Run"
11.
]
12.
}
13.
}
14.
15.
Album's
name:The Dark Side of the Moon
16.
Recorded by Pink Floyd in
1973
17.
First
track:Speak To Me
Reader和Writer
一些人喜欢使用stream的方式处理JSON数据,对于他们, 我们提供的接口是jsonreader和jsonwriter。JSONMapper实际上是建立在以上两个类的基础上的,所以你可以把这两个类当成是litJSON的底层接口。
使用JsonReader
viewsourceprint?
01.
using LitJson;
02.
using System;
03.
04.
public
class
DataReader
05.
{
06.
public
static
void
Main()
07.
{
08.
string sample = @"{
09.
""
name
""
:
""
Bill
""
,
10.
""
age
""
:
32
,
11.
""
awake
""
:
true
,
12.
""
n
""
:
1994.0226
,
13.
""
note
""
: [
""
life
""
,
""
is
""
,
""
but
""
,
""
a
""
,
""
dream
""
]
14.
}";
15.
16.
PrintJson(sample);
17.
}
18.
19.
public
static
void
PrintJson(string json)
20.
{
21.
JsonReader reader =
new
JsonReader(json);
22.
23.
Console.WriteLine (
"{0,14} {1,10} {2,16}"
,
"Token"
,
"Value"
,
"Type"
);
24.
Console.WriteLine (
new
String (
'-'
,
42
));
25.
26.
// The Read() method returns false when there's nothing else to read
27.
while
(reader.Read()) {
28.
string type = reader.Value !=
null
?
29.
reader.Value.GetType().ToString()
:
""
;
30.
31.
Console.WriteLine(
"{0,14} {1,10} {2,16}"
,
32.
reader.Token,
reader.Value,type);
33.
}
34.
}
35.
}
输出如下:
view
sourceprint?
01.
Token Value Type
02.
------------------------------------------
03.
ObjectStart
04.
PropertyName name System.String
05.
String Bill System.String
06.
PropertyName age System.String
07.
Int
32
System.Int32
08.
PropertyName awake System.String
09.
Boolean True System.Boolean
10.
PropertyName n System.String
11.
Double
1994.0226
System.Double
12.
PropertyName note System.String
13.
ArrayStart
14.
String life System.String
15.
String is System.String
16.
String but System.String
17.
String a System.String
18.
String dream System.String
19.
ArrayEnd
20.
ObjectEnd
相关文章推荐
- 【Unity3D插件】在Unity中读写文件数据:LitJSON快速教程
- 【Unity3D插件】在Unity中读写文件数据:LitJSON快速教程
- 【Unity3D插件】在Unity中读写文件数据:LitJSON快速教程 - 王选易
- 【Unity3D插件】在Unity中读写文件数据:LitJSON快速教程
- unity3d插件Daikon Forge GUI 中文教程-5-高级控件listbox和progress bar的使用
- UNITY3D 使用 litjson 制作数据表
- Unity3D使用LitJson解析服务器上的JSON
- Unity3D中LitJson使用
- Unity3d LitJson 的使用
- [android插件篇]如何快速通过json构建javabean对象(GsonFormat使用教程)
- unity3d的playmaker插件使用教程,一、电灯开关
- unity3d的playmaker插件使用教程,二、开关盒子
- unity3d的playmaker插件使用教程,三、对象出入触发,声音播放
- unity3d的playmaker插件使用教程,四、物品破坏,道具拾取
- unity3d的playmaker插件使用教程,五、进入区域改变平台颜色
- unity3d的playmaker插件使用教程,六、血量显示及处理
- unity3d的playmaker插件使用教程,七、playmaker和itween
- unity3d的playmaker插件使用教程,八、随机跳的盒子
- unity3d的playmaker插件使用教程,九、playmaker和脚本
- unity3d插件Daikon Forge GUI 中文教程2-基础控件Label的使用