私はAFNetworkingを使用していますが、JSON構造体をPOSTしようとしています。問題は、{"my_property":"my value"}
の代わりに、{my_property:'my_value'}
と書式設定していることです。私は引用符の最初のセットの損失はほとんどの場合OKですが、私は非JSONのシングルクォートで何をすべきか分かりませんし、それが知っているすべてで一重引用符を生成する理由についてはかなり混乱していますそれはNSDictionaryからJSONを作成しています。さらに、それは[Object] refsを含んでいます。ここで私はちょうど "{"を期待しています。これは、サーバが取得しているものです。AFNetworking不正な形式のJSONをPOSTしています - 単一引用符と[Object]の参照
...
num_matches: 32,
view_instance: properties_in_view: [Object],
[ { view_instance_ctr: 0, view_id: '4e5bb37258200ed9aa000011' },
...
ターゲットは、iOS 5.0であるので、私はは(私はまだこれを確認するために試していませんが)JSONを作成するために、NSJSONSerializationを使用していますを想定しています。私が送る辞書は、isValidJSONObjectを使ってJSONにバリデーションを行います。シリアライズされたバージョンをプリントアウトするとすばらしく見えます。
NSDictionary *params = myDictionaryThatValidatesToJSON;
httpClient.parameterEncoding = AFJSONParameterEncoding;
NSMutableURLRequest *request = [httpClient
requestWithMethod:@"POST" path:@"" parameters:params];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation start];
私が欠けているbigDummy = NO
フラグがあります願っています:コードの簡易版は次のようになります。
ある
//私は、これは、サーバー上で受信されているものであるかなり確信しています二重チェックします。 Firefox RESTプラグインを使用して同じJSONを正常に送信でき、実際にログに記録されたデータはすべて二重引用符で囲まれていることに注意してください。もう1つ注意してください:私は以前、サーバ上の他のPOST APIに他のデータを正常に送りましたが、大きな文字列で辞書を初期化していましたが、その二重引用符をエスケープしました。私はそれが何か違いがあるかどうかを見て、それがサーバーの問題ではないことを確かめるために今、それを試してみましょう。どうも。 – michael
JSONシリアライザが本当に[オブジェクト]を生成している場合、辞書に異常なオブジェクトがある必要があります。 – JosephH
AFNetworkingはよく理解できませんが、NSJSONSerializationが利用可能であれば使用します。私がこれを行う場合: NSData * jsonData = [NSJSONSerialization dataWithJSONObject:outDictオプション:NSJSONWritingPrettyPrintedエラー:&エラー]; NSString * jsonOut = [[NSString alloc] initWithData:jsonDataエンコーディング:NSUTF8StringEncoding]; 有効なJSONを生成します。私はプログラムでJSONを作成していますが、それはかなり簡単なので、私は何か変わったことを導入しているとは思わないでしょう。 – michael