2016-03-25 27 views
0

Aşağıdakiler için JOLT spesifikasyonları yazmama yardımcı olabilir misiniz?JOLT permenek için teknik özellikler

Girdi:

{ 
    "title": [ 
     "vsnu", 
     "anothervsnu" 
    ], 
    "anothertitle": [ 
     "vsnu", 
     "anothervsnu" 
    ] 
} 

Beklenen çıkışı:

{ 
Response : [ 
{ 
"head" : "title", 
"name" : "vsnu" 
}, 
{ 
"head" : "title", 
"name" : "anothervsnu" 
}, 
{ 
"head" : "anothertitle", 
"name" : "vsnu" 
}, 
{ 
"head" : "anothertitle", 
"name" : "anothervsnu" 
} 
] 
} 

Son 3 gün boyunca bu sıkışmış duyuyorum. Lütfen bana yardımcı ol. Ve umarım yukarıdaki soru beklentileri açıklar, bunu sadece StackOverflow doğrulama hata mesajını gösterdiği için yazıyorum.

Şimdiden teşekkürler.

cevap

0

Yalnızca iki yineleyiciye, biri girdinin tuşlarına ve özelliklerden bir tanesi dizisine ihtiyaç duyarsınız.

function buildObject(o) { 
 
    var result = []; 
 

 
    Object.keys(o).forEach(function (k) { 
 
     o[k].forEach(function (a) { 
 
      result.push({ head: k, name: a }); 
 
     }); 
 
    }); 
 
    return { Response: result }; 
 
} 
 

 
var input = { "title": ["vsnu", "anothervsnu"], "anothertitle": ["vsnu", "anothervsnu"] }, 
 
    output = buildObject(input); 
 

 
document.write('<pre>' + JSON.stringify(output, 0, 4) + '</pre>');

0

Jolt "shift" Bir defasında bir ürün işler için, sorun Haritalarının bir Array çıkışına yazma vardır.

Bu yapılabilir, ancak iki vardiya gerektirir. Birincisi, "baş" ve "isim" nin paralel dizilerini oluşturur ve ikincisi ise bunları paralel dizilerden gelen indeks sayılarını kullanarak Yanıt dizisine döndürür.

Spec

[ 
    { 
    "operation": "shift", 
    "spec": { 
     "*": { // title or anothertitle 
     "*": { // array index 
      "*": { // actual array value "vsnu" 
      "$2": "head[]", // for each array value grab a copy of the "title" 
      "$": "name[]" 
      } 
     } 
     } 
    } 
    }, 
    { 
    "operation": "shift", 
    "spec": { 
     "head": { 
     "*": "Response[&].head" 
     }, 
     "name": { 
     "*": "Response[&].name" 
     } 
    } 
    } 
]