web-dev-qa-db-ja.com

NSJSONSerializationを介してJSONにnull値を含める方法は?

全体的にNSJSONSerializationの使い方がわかったと思います。私がかけている電話は次のとおりです。

[NSJSONSerialization dataWithJSONObject:parameters options:0 error:&error]

ここで、parametersは、JSONリクエストで使用するキーと値を含むNSDictionaryです。空の文字列の代わりにnullを値として使用する必要があるまでは、すべて問題ありません。値をnullに設定する方法がまったく見つかりません。私が作成する必要があるjsonの例は次のとおりです。

{"target"
  {"firstname":<firstname>,
   "lastname":<lastname>},
 "error":null
}

サーバーのセットアップ方法は、文字列としてのエラー、またはエラーがない場合はnullのいずれかを予期することです。

何か案は? API呼び出しなどがありませんか?

ありがとう!

27
ymotov

NSNullを使用する必要があります。例えば

スイフト

let dict = ["firstKeyHasValue": 2342, "secondKeyHasNoValue": NSNull()]

Objective-C

NSDictionary *dict = @{ @"error": [NSNull null] };

NSDictionary の公式ドキュメントから:

キーも値もnilにすることはできません。辞書でNULL値を表す必要がある場合は、NSNullを使用する必要があります。

55

私はこれをやってみて、私のために働きました。

var param:[String:Any] = [:]

param ["firstName"] = "somename"

param ["middleName"] = NSNull()

param ["lastName"] = "somename"

print(param)

結果: ["firstName": "somename"、 "middleName":null、 "lastName": "somename"]

0
Ashish Gupta

Swifty JSONを使用している場合は、nilを処理する必要がある PR を作成しました。まだマージされておらず、いくつかの改善が必要な場合があります。それを行う方法を説明する part は、必要に応じて独自の実装を作成するための良いスタートになるはずです。ロジックはそれほど複雑ではありませんが、エッジのケースやパフォーマンスについて考えるのは難しいかもしれません。

NSJSONSerializationに置き換わるため、質問への直接の回答ではないことはわかっていますが、Swiftがnil/jsonを処理する方法に不満を感じる人がいることを願っています!

0
Guig