1

ウェブにはこれに関する例がたくさんあることは知っていますが、私はすべてを試しましたが、何かが足りません。JSON文字列をディシオナリに解析したいと思います。

Eはサーバーの次の応答を持っています:

{"type":"response", "action":"mkac", "result":"[{"Band":"Adele","Hits":422},{"Band":"Bryan Adams","Hits":93},{"Band":"Adai","Hits":30},{"Band":"Adamo","Hits":18},{"Band":"Adelle","Hits":15}]"}

そして私は作る:

NSError *parseError = nil;
                        NSDictionary *outputDictionary = 
                        [NSJSONSerialization JSONObjectWithData: [output dataUsingEncoding:NSUTF8StringEncoding]
                                                        options: NSJSONReadingMutableContainers
                                                          error: &parseError];
                        NSLog(@"server said: %@", [outputDictionary objectForKey:@"result"]);

しかし、outputDictionaryは常にnullを返します。

誰かがそれを手伝ってくれますか?

どうもありがとう。

4

2 に答える 2

2

はい、json の形式が正しくありません。適切にフォーマットすると、その理由がわかります。

{
  "type":"response", 
  "action":"mkac", 
  "result":"[{"Band":"Adele","Hits":422},{"Band":"Bryan Adams","Hits":93},{"Band":"Adai","Hits":30},{"Band":"Adamo","Hits":18},{"Band":"Adelle","Hits":15}]"
}

"result"の値が文字で始まることに気付くでしょう。"これは、値が技術的に であることを意味します"[{"。しかしその後、出くわしBandます。Bandは二重引用符で囲まれていない (または前に a,や aなどが付いていない)ため}、解析エラーが発生します。[{の直前と直後の二重引用符を削除すると}]、正しく解析されます。

{
  "type":"response", 
  "action":"mkac", 
  "result":[
    {
      "Band":"Adele",
      "Hits":422
    },
    {
      "Band":"Bryan Adams",
      "Hits":93
    },
    {
      "Band":"Adai",
      "Hits":30
    },
    {
      "Band":"Adamo",
      "Hits":18
    },
    {
      "Band":"Adelle",
      "Hits":15
    }
  ]
}
于 2012-10-03T14:30:00.587 に答える
0

私は何が起こったのかを理解しました。"[ を [ に置き換える必要があったため、json 文字列は有効ではありませんでした。

于 2012-10-03T14:53:07.837 に答える