このjsonファイル "321"、日付 "654"、および "123"の出席者値を " @attributes "になります。私はレベルをフィルタリングすることができましたが、3以上のレベルで値にアクセスするより効率的な方法があるのだろうかと思いました。または、csharpのlinqに似たライブラリがあります。3つ以上のレベルからjsonデータを素早く最新のバージョンに取得する方法
"GameData"にジャンプしてすべてのGameDataを取得し、オブジェクトのリストに格納することはできますか?
json["level1"].["level2"].["level3"]
JSON::
か、単にチェーンなど
{
"Feed":{
"Doc":{
"Comp": {
},
"GameData": {
"GameInfo": {
"Attendance": 321,
"Date": 654,
"ID": 00
}
},
"GameData": {
"GameInfo": {
"Attendance": 321,
"Date": 654
"ID": 01
}
}
},
"@attributes": {
"Number": 123
}
}
}
コード:
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String: AnyObject]
if let articlesFromJson = json["Feed"] as? [String: AnyObject]{
print("level1")
if let aFromJson = articlesFromJson["Doc"] as? [String: AnyObject]{
print("level2")
if let aFromJson = articlesFromJson["GameData"] as? [String: AnyObject]{
print(aFromJson)
}
}
}
あなたのJSONは奇妙である:1)の後に不足しているブラケットがあります最初の 'GameData' 2)それは同じのための2つのエントリを持ってしても意味がありません。キー 'GameData':最初のものが上書きされます3)文字列ではなく数値になるように見えるので' '' '' 321 "' => '321'を使います – Guig
はい私はそれを知っていますユニークなIDのために同じ名前の2つを持つのは理にかなっていないのですか?私と一緒に練習しているjsonは編集可能ではありません。数字は文字列ではありません。私はjsonを再作成し、ビット – user3558639
jsonで同じキーを2回書くとすぐに、最初のものは上書きされません。複数のアイテムを保持したい場合は、配列を使用する必要があります: '{" Doc ":{"ゲームデータ ":[{" ID ":1、...}、{" ID ":1、...}]}}' – Guig