2017-02-01 14 views
1

PostgresのdbとGroovyでJSONBを使用して配列内のオブジェクトを取得しようとしています。配列内のオブジェクトを選択JSONB

My Jsonはこのように構成され、データベースに保存されます。

"playersContainer": { 
     "players": [ 
      { 
       "id": "1", 
       "name": "Nick", 
       "teamName": "Shire Soldiers", 
       "ratings": [ 
        1, 
        5, 
        6, 
        9 
       ], 
       "assists": 17, 
       "manOfTheMatches": 20, 
       "cleanSheets": 1, 
       "data": [ 
        3, 
        2, 
        3, 
        5, 
        6 
       ], 
       "totalGoals": 19 
      }, 
      { 
       "id": "2", 
       "name": "Pasty", 
       "teamName": "Shire Soldiers", 
       "ratings": [ 
        6, 
        8, 
        9, 
        10 
       ], 
       "assists": 25, 
       "manOfTheMatches": 32, 
       "cleanSheets": 2, 
       "data": [ 
        3, 
        5, 
        7, 
        9, 
        10 
       ], 
       "totalGoals": 24 
      } 
     ] 
    } 

は、私は彼らが私のプロジェクトにモデルオブジェクトとリストに保存するためにそれらをマップ上でループ、プレイヤー配列内のオブジェクトを取得したいです。私はこのクエリを使用する瞬間

SELECT content -> 'playersContainer' -> 'players' from site_content 

これはバック

私はちょうど 内のオブジェクトは、私は、ループにしたいしたいしかし、私にオブジェクトの配列を与える
[{"id": "1", "bio": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla imperdiet lorem tellus, in bibendum sem dignissim sed. Etiam eu elit sit amet lacus accumsan blandit sed ut dolor. Mauris vel dui non nisi vestibulum commodo vel id magna. Donec egestas magna in tincidunt mollis. Fusce mauris arcu, rhoncus ut lacus sed, fermentum ultrices elit. In sollicitudin at ex dapibus vestibulum. Pellentesque congue, est id lobortis viverra, mauris lectus pharetra orci, ut suscipit nisl purus vehicula est. Aliquam suscipit non velit vel feugiat. Quisque nec dictum augue.", "data": [3, 2, 3, 5, 6], "name": "Nick Pocock", "assists": 17, "ratings": [1, 5, 6, 9], "teamName": "Shire Soldiers", "totalGoals": 19, "cleanSheets": 1, "manOfTheMatches": 20}, {"id": "2", "bio": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla imperdiet lorem tellus, in bibendum sem dignissim sed. Etiam eu elit sit amet lacus accumsan blandit sed ut dolor. Mauris vel dui non nisi vestibulum commodo vel id magna. Donec egestas magna in tincidunt mollis. Fusce mauris arcu, rhoncus ut lacus sed, fermentum ultrices elit. In sollicitudin at ex dapibus vestibulum. Pellentesque congue, est id lobortis viverra, mauris lectus pharetra orci, ut suscipit nisl purus vehicula est. Aliquam suscipit non velit vel feugiat. Quisque nec dictum augue.", "data": [3, 5, 7, 9, 10], "name": "Connor Pasty", "assists": 25, "ratings": [6, 8, 9, 10], "teamName": "Shire Soldiers", "totalGoals": 24, "cleanSheets": 2, "manOfTheMatches": 32}] 

を私にもたらしますオブジェクトの上にマッピングし、リストに格納します。これはGroovyのようなものです。

Blocking.get { 
      sql.rows(""" 
      SELECT content -> 'playersContainer' -> 'players' from site_content 
       """) 
     }.map { rows -> 
      rows.collect { GroovyRowResult result ->  
       objectMapper.readValue(result, Player) 
      } 
     } 
    } 

これはJSONBで可能ですか? "1"、 "バイオ":「Loremのイプサム嘆き、AMET consecteturのadipiscingのELIT座る

答えて

0

あなたはjsonb_array_elementsread the docs

SELECT jsonb_array_elements(content->'playersContainer'->'players') FROM site_content 
+0

を使用することができ、このjsonb_array_elementsは= { "ID" 私を戻すために思われます。 Nulla imperdiet lorem tellus、in bibendum sem dignissim sed。なぜなら、配列の要素を取得するだけではないのではないでしょうか? –

+0

その "{" id ":" 1 "、" bio ":" Lorem ipsum dolor sit amet、consectetur adipiscing elit。 Nulla imperdiet lorem tellus、bibendum sem dignissim sedで。エイリアンはエイリアンに似ています。 Mauris vel dui non nisi vestibulum} '配列の要素ですか? –

関連する問題