0

私はJSONを初めて使用しますが、なぜこれが失敗するのかわかりません。JSONはオンライン検証ツールに従って有効ですが、NSJSONSerilizationはこれを文字列が無効であると言います。なぜ無効なのですか?

NSString* JSON = @"{\"Questionnaire\":{\"questionnaireid\":1,\"modifiedDate\":\"2012-12-28 15:27:00\"}}";

if (![NSJSONSerialization isValidJSONObject:JSON]) {
  return nil;
}

NSError *jsonParsingError = nil;
NSDictionary* data = [NSJSONSerialization dataWithJSONObject:JSON options:NSJSONReadingMutableContainers error:&jsonParsingError];
4

2 に答える 2

2

すでにJSONを自分で作成しているのに、なぜシリアル化を行ったのですか?

あなたがすべきこと:

NSData *jsonPayload = [JSON dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *data = [NSJSONSerialization JSONObjectWithData:jsonPayload
 options:kNilOptions error:&error];
于 2013-02-21T15:03:52.303 に答える
1

NSString を渡す場合、JSON オブジェクトは NSArray または NSDictionary 型でなければならないためです。

ドキュメントから:

JSON に変換できるオブジェクトには、次のプロパティが必要です。

  • 最上位オブジェクトは NSArray または NSDictionary です。
  • すべてのオブジェクトは、NSString、NSNumber、NSArray、NSDictionary、または NSNull のインスタンスです。
  • すべての辞書キーは NSString のインスタンスです。
  • 数値は NaN または無限大ではありません。

アップデート

あなたはおそらくこれをしたいでしょう:

NSData *jsonData = [JSON dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];
于 2013-02-21T15:05:21.417 に答える