以下の JSON データをデコードしたいと考えています。
{
"content":
[
{
"1":"a",
"2":"b",
"3":"c",
"4":"d",
"mark":"yes"
}
]
}
NSArray または NSDictionary に入れるかどうかわからない
コメント歓迎
以下の JSON データをデコードしたいと考えています。
{
"content":
[
{
"1":"a",
"2":"b",
"3":"c",
"4":"d",
"mark":"yes"
}
]
}
NSArray または NSDictionary に入れるかどうかわからない
コメント歓迎
どのiOSバージョンを使用していますか? iOS 5NSJSONSerialization
では、JSON データを解析するためのクラスがあります。古い iOS または MAC OSX をターゲットにする必要がある場合は、SBJSON
. 投稿される文字列は、1 つの辞書を持つ配列を持つ NSDictionary になります。キーを使用してアレイにアクセスできます@"content"
コード内:
NSString * jsonString = @"blblblblblb";
NSStringEncoding encoding;
NSData * jsonData = [jsonString dataUsingEncoding:encoding];
NSError * error=nil;
NSDictionary * parsedData = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:&error];
SWIFT 2.0 では:
let jsonString = "blblblblblb"
let encoding = NSUTF8StringEncoding
let jsonData = jsonString.dataUsingEncoding(encoding)
guard let jData = jsonData else {return}
do {
let parsedData = try NSJSONSerialization.JSONObjectWithData(jData, options: [])
} catch let error {
print("json error: \(error)")
}
[更新] このNSJSONSerialization
クラスは 10.7 でも利用できます。私のコメントは正しくありませんでした。
その特定の文字列は NSDictionary にデコードされます。これは、最も外側のものは、これまでに見たすべての JSON 実装の NSDictionary にマップされる JSON オブジェクトであるためです。任意の文字列を処理したい場合は、返されるものをテストする必要があります
NSError *jsonError;
id parsedThing = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
if (parsedThing == nil)
{
// error
}
else if ([parsedThing isKindOfClass: [NSArray class]])
{
// handle array, parsedThing can be cast as an NSArray safely
}
else
{
// handle dictionary, parsedThing can be cast as an NSDictionary
// NB only dictionaries and arrays allowed as long as NSJSONReadingAllowFragments
// not specified in the options
}
stringWithContentsOfFile:encoding:
で非推奨ですiOS<6
為にiOS 6+
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"contents" ofType:@"json"];
NSError * error=nil;
NSString *jsonString = [NSString stringWithContentsOfFile:filePath encoding:nil error:&error];
NSData * jsonData = [jsonString dataUsingEncoding:nil];
NSArray * parsedData = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:&error];
contents.json
ファイルはバンドルにあります。
次のことができます。
NSData *data = ...; //JSON data
NSError *jsonError = nil;
[NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
5 つのオブジェクトを含む単一NSDictionary
の を含むが返されます。NSArray
NSDictionary
NSString