どうすればAny
タイプをキャストできますかJSONSerialization
から辞書の配列に移動しますか?'Any'は '[[String:Any]]'に変換できません
let jsonArray: [[AnyHashable: Any]]
do {
jsonArray = try JSONSerialization.jsonObject(with: jsonData, options: [.ReadingOptions.allowFragments]) as! [[AnyHashable : Any]]
}
catch {
let description = NSLocalizedString("Could not analyze earthquake data", comment: "Failed to unpack JSON")
print(description)
return
}
しかし、コンパイラは私にエラーメッセージが表示できます::私のコードがある
P.S.:
'を任意の' 'は[任意] [AnyHashable]' に変換できません
JSONファイルは次のようになりますので、私は、辞書の配列を解析する必要があります。
[{ "username": "admin", "password": "123" }, { "username": "bbvb", "password": "3333" }, { "username": "asd", "password": "222" }]
JSONデータが破損しているか正しくない可能性がありますので、 ''としてオペレータとオプションの鋳物を使用し、力のキャストを使用しないでください?
はこれを試してみてください。また、JSON仕様によれば、JSONキーは 'String'でなければならないので、' AnyHashable'を辞書キーとして使用する理由はありません。しかし、実際のJSONレスポンスを見ることなく、正確なヘルプを表示することはできません。期待したJSONフォーマットを受け取っていない可能性があります。 –
@DávidPásztor私はJSOnの例でポストを更新しました。 'AnyHashable'を 'String'に変更しても何も修正されません。データが破損した場合、 'do catch'はそれをキャッチしますので、オプションを使用する必要はありません。 – Shmidt
これは当てはまりません。 do-catchブロックはthrow可能なエラーだけをキャッチしますが、強制キャスティングはキャッチできません。 do-catchブロックは、データをJSONにデコードすることができない場合にのみエラーをキャッチしますが、JSONは正しいフォーマットであるとは限りません。 –