Objective-c json
通过使用NSJSONSerialization 可以Json与Foundation的相互转换。下面具体介绍 Objective-c json 的使用。
Json To Fundation
使用 JSONObjectWithData 可以将 Json 转化为 Foundation。Json的顶层可以是{}
或 []
因此可以有 NSDictionary 和 NSArray 两种格式。读取使用 ObjectForKey 返回对应的对象。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
NSString*
items
=
@
"{"
items
":["
item0
","
item1
","
item2
"]}"
;
NSData *
data
=
[
items
dataUsingEncoding
:
NSUTF8StringEncoding
]
;
NSError *
error
=
nil
;
id
jsonObject
=
[
NSJSONSerialization
JSONObjectWithData
:
data
options
:
NSJSONReadingAllowFragments
error
:
&
amp
;
error
]
;
if
(
[
jsonObject
isKindOfClass
:
[
NSDictionary
class
]
]
)
{
NSDictionary *
dictionary
=
(
NSDictionary *
)
jsonObject
;
NSLog
(
@
"Dersialized JSON Dictionary = %@"
,
dictionary
)
;
}
else
if
(
[
jsonObject
isKindOfClass
:
[
NSArray
class
]
]
)
{
NSArray *
nsArray
=
(
NSArray *
)
jsonObject
;
NSLog
(
@
"Dersialized JSON Array = %@"
,
nsArray
)
;
}
else
{
NSLog
(
@
"An error happened while deserializing the JSON data."
)
;
}
NSDictionary *
dict
=
(
NSDictionary *
)
jsonObject
;
NSArray*
arr
=
[
dict
objectForKey
:
@
"items"
]
;
NSLog
(
@
"list is %@"
,
arr
)
;
|
Fundation To Json
使用 dataWithJsonObject 可以将 Fundation 转换为 Json。其中 options:NSJSONWritingPrettyPrinted 是分行输出json ,无空格输出使用 option:kNilOptions。
下面这段代码是IOS内购获取商品列表。获取后,将内容添加到Json中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
NSArray *
myProduct
=
response
.
products
;
NSDictionary *
myDict
;
NSMutableDictionary *
dict
=
[
NSMutableDictionary
dictionaryWithCapacity
:
4
]
;
for
(
int
i
=
0
;
i
&
lt
;
myProduct
.
count
;
++
i
)
{
//NSLog(@"----------------------");
//NSLog(@"Product title: %@" ,[myProduct[i] localizedTitle]);
//NSLog(@"Product description: %@" ,[myProduct[i] localizedDescription]);
//NSLog(@"Product price: %@" ,[myProduct[i] price]);
//NSLog(@"Product id: %@" ,[myProduct[i] productIdentifier]);
myDict
=
[
NSDictionary
dictionaryWithObjectsAndKeys
:
[
myProduct
[
i
]
localizedTitle
]
,
@
"title"
,
[
myProduct
[
i
]
localizedDescription
]
,
@
"desc"
,
[
myProduct
[
i
]
price
]
,
@
"price"
,
[
myProduct
[
i
]
productIdentifier
]
,
@
"product"
,
nil
]
;
[
dict
setValue
:
myDict
forKey
:
[
myProduct
[
i
]
productIdentifier
]
]
;
}
if
(
[
NSJSONSerialization
isValidJSONObject
:
dict
]
)
{
NSError*
error
;
NSData *
str
=
[
NSJSONSerialization
dataWithJSONObject
:
dict
options
:
kNilOptions
error
:
&
amp
;
error
]
;
NSLog
(
@
"Result: %@"
,
[
[
NSString
alloc
]
initWithData
:
str
encoding
:
NSUTF8StringEncoding
]
)
;
}
else
{
NSLog
(
@
"An error happened while serializing the JSON data."
)
;
}
|