私は安らかな呼び出しから返されたデータ(JSON)を消費しようとしています。安心して電話からJSONをデシリアライズ
:私は次のコード行を使用して、これをデシリアライズした場合[{"Key":"DATALOG_MAX_ID","Val":"875250","DataType":1,"Description”:”N/A.”},{“Key":"SNAPSHOT_DATALOG_ID","Val":"875259","DataType":1,"Description”:”N/A“},{“Key":"SNAPSHOT_FILE_SIZE","Val":"492590686","DataType":1,"Description”:”N/A“},{“Key":"SNAPSHOT_GEN_ID","Val":"770","DataType":1,"Description”:”N/A”},{“Key":"SNAPSHOT_LAST_UPDATED","Val":"2017-04-14 00:01:17.240","DataType":6,"Description”:”N/A“},{“Key":"SNAPSHOT_MAX_ID","Val":"374418","DataType":1,"Description”:”N/A”},{“Key":"SNAPSHOT_READY","Val":"0","DataType":4,"Description”:”N/A”},{“Key":"SNAPSHOT_REQUIRES_BUILD","Val":"1","DataType":4,"Description”:”N/A”}]
:以下は私のコール(キー/値のペアの配列、リストの各項目について、常に4のキー/値のペア)からデータを返されます
let json = try JSONSerialization.jsonObject(with: data!, options: []) as![Dictionary<String, Any>]
成功しますが、値は配列内の各辞書の4つのキーと値のペアのうち2つにのみ存在します。変数をステップ実行して調べると、見つからない値に対してはBuiltin.rawpointerは常に0x0になります。私は次の行を使用してデシリアライズしようとした場合
奇妙なことに、:
let json = try JSONSerialization.jsonObject(with: data!, options: []) as![MetaDataEntry]
不思議なこと、それは成功し、私が見ることができるすべてのデータは、(スクリーンショット下記参照)があります。
これは私の作品
多くは(誤字引用符で囲まれている例えば、 '」 N/A ")。これが問題になるか、JSONを正しくコピーしていませんか? –
私が働いている組織のためデータを少し修正しなければならなかったのですが(例えば引用符で囲まれていないなど) – Paul
そのJSONをhttps://jsonlint.comにコピーして貼り付けてください。 *問題。 –