0

CouchDB サーバーに HTTP PUT リクエストを送信しようとしています。NSString インスタンスを NSData に変換しています。次に、この NSData インスタンスを NSArray に変換し、これを CouchDB に PUT しようとします。だから、このようなもの:

//convert string to NSData
    NSData *docData = [@"{\"name\":\"nick\"}" dataUsingEncoding:NSUTF8StringEncoding];
//NSData to NSArray
    NSArray *arrayJson = [NSArray arrayWithObjects:[NSJSONSerialization JSONObjectWithData:docData options:kNilOptions error:nil],nil];

次に、 AFNetworkingを使用して HTTP PUT リクエストを作成しています(これは rad btw です ;))

問題は、次のような json 文字列が作成されることです。

[{"name":"nick"}]

これは有効な JSON ですが、Couch は 400 Bad JSON を返します。[ ] を削除すると問題が解決します。これらのブラケットは NSData を NSArray に変換した結果であると確信していますが、NSJSONSerialization を使用してこれを達成する方法が他にわかりません。誰でも助けることができますか?

ありがとう!

編集

わかりやすくするために、私が抱えていた問題をさらに説明しましょう。PUT HTTP リクエストを使用して、CouchDB HTTP API を使用してドキュメントを作成しています。ドキュメントは手動でコーディングされた JSON である可能性があるため、この解析の課題があります。Couch は、単一のドキュメントが作成されることを想定しています。したがって、単一の JSON オブジェクトが必要です。それらの配列ではありません。[{"key":"value"}] が Couch から 400 HTTP レスポンスを返すのはそのためのようです。配列に単一のオブジェクトが含まれている場合でも。API が配列の長さに基づいて正しく推論しないことは少しうるさいようですが、どちらの方法でも議論できると思います。以下の選択した回答を参照してください。これは私が探していたものです。回答してくれたすべての人に感謝します!

4

1 に答える 1