Я использовал JSON Input, используя $ .address [*], чтобы прочитать в поле jsonRow полную карту каждого элемента pe:
{"address":[
{"AddressId":"1_1","Street":"A Street"},
{"AddressId":"1_101","Street":"Another Street"},
{"AddressId":"1_102","Street":"One more street", "Locality":"Buenos Aires"},
{"AddressId":"1_102","Locality":"New York"}
]}
В результате получается 4 jsonRows по одному для каждого элемента., pe jsonRow = {"AddressId":"1_101","Street":"Another Street"}
.Затем, используя шаг Javascript, я отображаю свои значения следующим образом:
var AddressId = getFromMap('AddressId', jsonRow);
var Street = getFromMap('Street', jsonRow);
var Locality = getFromMap('Locality', jsonRow);
Во второй вкладке скрипта я вставил минимизированный код анализа JSON из https://github.com/douglascrockford/JSON-js и функцию getFromMap:
function getFromMap(key,jsonRow){
try{
var map = JSON.parse(jsonRow);
}
catch(e){
var message = "Unparsable JSON: "+jsonRow+" Desc: "+e.message;
var nr_errors = 1;
var field = "jsonRow";
var errcode = "JSON_PARSE";
_step_.putError(getInputRowMeta(), row, nr_errors, message, field, errcode);
trans_Status = SKIP_TRANSFORMATION;
return null;
}
if(map[key] == undefined){
return null;
}
trans_Status = CONTINUE_TRANSFORMATION;
return map[key]
}