0

次の形式で JSON 配列を解析する必要があります。

[
 {
  name: "10-701 machine learning",
  _id: "52537480b97d2d9117000001",
  __v: 0,
  ctime: "2013-10-08T02:57:04.977Z"
 },
 {
  name: "15-213 computer systems",
  _id: "525616b7807f01fa17000001",
  __v: 0,
  ctime: "2013-10-10T02:53:43.776Z"
 }
]

NSData を取得したら、NSDictionary に転送します。

NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSLog(@"%@", dict);

しかし、コンソールから見ると、辞書は実際には次のようになっていると思います。

(
        {
        "__v" = 0;
        "_id" = 52537480b97d2d9117000001;
        ctime = "2013-10-08T02:57:04.977Z";
        name = "10-701 machine learning";
    },
        {
        "__v" = 0;
        "_id" = 525616b7807f01fa17000001;
        ctime = "2013-10-10T02:53:43.776Z";
        name = "15-213 computer systems";
    }
)

外側のかっこはどういう意味ですか?この NSDictionary を一部の Course オブジェクトの NSArray または NSMutableArray にさらに転送するにはどうすればよいですか (自分で定義したもので、JSON 配列の各要素を表現してみてください)。

4

2 に答える 2

2

このコードを使用して、

NSArray *array = [NSJSONSerialization JSONObjectWithData: responseData options:NSJSONReadingMutableContainers error:&error];
NSDictionary *dict = [array objectAtIndex:0];

次に、次のコードで値を取得できます。

NSString *v = [dict objectForKey:@"__v"];
NSString *id = [dict objectForKey:@"_id"];
NSString *ctime = [dict objectForKey:@"ctime"];
NSString *name = [dict objectForKey:@"name"];
于 2013-10-10T03:19:53.163 に答える
0

括弧は、NSDictionary の出力形式が JSON の形式とまったく同じではないことの結果です。コードは引き続き JSON を NSDictionary オブジェクトに正常に変換します。

しかし、あなたが本当に欲しいのは辞書の配列だと思います。このようなもの:

NSArray *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSDictionary *firstObject = [json objectAtIndex:0];

この後、firstObject以下が含まれます。

{
    "__v" = 0;
    "_id" = 52537480b97d2d9117000001;
    "ctime" = "2013-10-08T02:57:04.977Z";
    "name" = "10-701 machine learning";
}

そして、あなたは情報を取得することができますobjectForKey:

NSString *time = [firstObject objectForKey:@"ctime"];
// time = "2013-10-08T02:57:04.977Z"

それが役立つことを願っています。

于 2013-10-10T03:20:04.910 に答える