2016-04-01 13 views
0

kayıtları ve karıştırma alanları unnesting Ben aşağıdaki dosya:jq: Her iki rekor seviyelere

[ 
    { 
     'id': 1, 
     'arr': [{'x': 1, 
       {'x': 2}] 
    }, 
    { 
     'id': 2, 
     'arr': [{'x': 3}, 
       {'x': 4}] 
    } 
] 

Nasıl bu jQ kullanarak aşağıdaki forma dönüşebilir?

[ 
    {'id': 1, 'x': 1}, 
    {'id': 1, 'x': 2}, 
    {'id': 2, 'x': 3}, 
    {'id': 2, 'x': 4}, 
] 

cevap

0

Soruda gösterilen giriş geçerli JSON değil.

map((.arr[]|.x) as $x | {id, "x": $x}) 

Çıktı:

[ 
    { 
    "id": 1, 
    "x": 1 
    }, 
    { 
    "id": 1, 
    "x": 2 
    }, 
    { 
    "id": 2, 
    "x": 3 
    }, 
    { 
    "id": 2, 
    "x": 4 
    } 
] 
1

o bundan fazla karmaşık almaz varsayarsak, aşağıda gösterildiği gibi bazı küçük değişiklikler yaptıktan sonra geçerli JSON, aşağıdaki filtre çıktı üretir hale getirmek için

map(del(.arr) + .arr[]) 

Buöğe içeriği ile her bir nesnenin arr özelliğini değiştirmekte olduğunuz varsayımıyla geçerli: sadece bu yapabilirdi. Tam olarak ne yapmaya çalıştığın belli değil.