2017-09-24 6 views
0

WebアプリケーションからJSON出力を読み込もうとしています。この出力は次のとおりです。SwiftでJSON出力を読む

[{"group_name":"XYZ","adminof":0}] 

私がどのように見える構造体を持っている:

struct grouplistStruct{ 
var group_name : String 
var adminof : Any 
} 

私が使用しているコードは次のとおりです。

let jsonArray = try JSONSerialization.jsonObject(with: data, options: []) as! [Any] 
for jsonResult in jsonArray{ 

      let loc = grouplistStruct(group_name: jsonResult["group_name"], adminof: jsonResult["adminof"]) 

私はjsonArrayが正しく値を読み込むことがわかります。同様にループのために、するJsonResultも正しく

の値を読んでいる。しかし、私は構造体変数にこの値を代入しようとすると、それがエラーを示しています。なぜ起こっていることを

Type 'Any' has no subscript members 

を?申し訳ありませんが、私はこのすべてを学んでいるので、スウィフトには新しいです。

+0

てみ' [任意] [文字列]この文で[[String: Any]]代わりの[Any]を使用する必要がありますが、たとえば持つことができるので、これは動作します'JSONSerialization.jsonObject(データ、オプション:[])を! [Any] ' – 3stud1ant3

+0

これは動作しますが、これはどうしますか?いくつかの光を投げることができますか? – coderatlarge

+1

[エラーで検索してください](https://stackoverflow.com/search?q=%5Bswift%5D+Type+%27Any%27+has+no+subscript+members)。これは何度も何度も尋ねられています。 – rmaddy

答えて

0

あなたのJSONデータは、このような辞書を含む配列であるので:

[{"group_name":"XYZ","adminof":0}] 

あなたがAnyの配列としてかつ迅速AnyでJSONをダウンキャストされているので、あなたがエラーに

Type 'Any' has no subscript members

を取得しています(名前が示唆しているように)IntDouble、またはDictionary of type [String: String]のようなタイプを表します。IntまたはDoubleはhav下付き文字someInt["subscript"]

[[String: Any]]を使用して特定のタイプにダウンキャストする必要があります。 これは[String:Any]タイプの辞書を含む配列を表します。この声明の中で、 `の代わりに` [任意] `の:辞書は添字メンバーがsomeDict["group_name"]

したがって、あなたがtry JSONSerialization.jsonObject(with: data, options: []) as! [Any]