JSONで特定のキー(この場合はid
)をIntとして返すAPIがあります。文字列。 JSONを解析するためにcodableを使用するにはどうすればよいですか?コードでコードを使用することがありますが、時にはIntやその他の文字列を返します。
struct GeneralProduct: Codable {
var price:Double!
var id:String?
var name:String!
private enum CodingKeys: String, CodingKey {
case price = "p"
case id = "i"
case name = "n"
}
init(price:Double? = nil, id: String? = nil, name: String? = nil) {
self.price = price
self.id = id
self.name = name
}
}
このエラーメッセージが表示され続ける:Expected to decode String but found a number instead
idフィールドが空であるためidフィールドが空の場合、デフォルトでは、codableが数字として識別するIDとして0が返されます。私は基本的にIDキーを無視することができますが、コード可能では私の知識にそれを無視するオプションを与えていません。これを処理する最良の方法は何でしょうか?
ここにJSONがあります。それは
{
"p":2.12,
"i":"3k3mkfnk3",
"n":"Blue Shirt"
}
エラー作業
超簡単です - 何のIDがシステムに存在しないので、それは明らかにコード化可能な文字列ではなく数値として見ているデフォルトとして0を返します。
{
"p":2.19,
"i":0,
"n":"Black Shirt"
}
私はあなたに私たちをお勧めしますe SwiftyJSONライブラリ。 – t4nhpt
なぜそれを言うのですか?私は本当にコード練習がはるかに優れているので、SwiftyJSONを使うのが良い習慣だとは思わない。解決策がない場合は、明らかにSwiftyJSONを使用しますが、これが実行される方法がなければ私は驚くでしょう。 –
どのJSONが動作し、どのJSONが動作しないかの例を挙げることができますか? –