您的位置:首页 > 移动开发 > Unity3D

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

view
sourceprint?

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: