2016-08-22 9 views
0

jsonの応答値を配列に追加したいとしました。私のグルーヴィーなスクリプト、Groovy:ノードがnullを返す理由

import groovy.json.* 
def ResponseMessage = '''{ 
"Unit": { 
    "Screen": [{ 
     "Profile ": { 
      "ID ": 12, 
      "Rate ": 0 
     }, 
     "Rate ": 600, 
     "Primary ": 1, 
     "Audio ": [{ 
      "Id ": 1, 
      "Name ": null 
     }], 
     "Pre ": 5, 
     "Post ": 1 
    }] 
} 
} ''' 
def json = new JsonSlurper().parseText(ResponseMessage) 

def Screen = json.Unit.Screen 
log.info Screen 
def array= [] 
Screen.each { s -> 
array.addAll(s.Rate,s.Primary,s.Pre) 
log.info "array : " + array 
} 

配列を返す、 INFO:配列:[NULL、NULL、NULL]パターン "ループ内でのaddAllを呼び出して、配列を作成する" の代わりに

+1

あなたはJSONにスペースがありますか?つまり、: "Profile" '< - 最後に –

+0

はい:(手動でスペースを削除した後に、このエラーが発生しました)エラー:java.lang.IndexOutOfBoundsException:インデックス:600、サイズ:0 – Gkm

答えて

3

、してみてくださいこの:

def array = Screen.collectMany { s -> 
    [s.Rate,s.Primary,s.Pre] 
} 

(もちろん、あなたはJSONのキーからスペースを削除した後)

+0

ありがとうございます。優れています:) – Gkm

+0

なぜヌルキーにエラーが出ています@tim_yates :( – Gkm

+0

@Geetaはあなたに例を挙げることができますか?私はあなたが何を意味するのか分かりません...別の質問かもしれませんか? –

関連する問題