Tieni presente che Json è soltanto un formato per scambio dati, quindi evita di manipolare i dati di questo formato.
descrizioni = JSON.parse('[' + $('#hdItem').val() + ']'); // perché stai concatenando ?
// perché lavori in json ?
var jsonCode = jsonSchema(id, tipo);
descrizioni.push(new JSONObject(jsonCode));
Il passo successivo è modificare dei dati all'interno dell'oggetto:
descrizioni = JSON.parse('[' + $('#hdItem').val() + ']');
Usa javascript e converti l'array quando hai finito...
mettiamo che tu abbia un oggetto js del genere;
var myObj = {"id": "", "tipo": ""};
la tua function che accetta come parametri i valori che ti arrivano dal modal deve essere più o meno così;
//crea il tuo oggetto a prescindere
myObj .id = id;
myObj .tipo = tipo;
//controlla se il campo nascosto contiene valori
if ($("#hidden").val() != "") {
//contiene già uno o più oggetti, quindi lo converto in un array js
var collection = JSON.parse($("#hdItem").val());
//se devo modificare e/o rimuovere un oggetto devo iterare, quindi
for (var i = 0; i < collection.length; i++) {
var obj = collection[i];
}
}
else {
//Il campo nascosto è vuoto
//Instanzio un array
var newCollection = [];
newCollection.push(myObj);
$("#hdItem").val(JSON.stringify(newCollection));
}
Togliendo i commenti, questo metodo diventa qualcosa del genere;
function saveModalValues(id, tipo){
if ($("#hdItem").val() != "") {
var collection = JSON.parse($("#hdItem").val());
for (var i = 0; i < collection.length; i++) {
var obj = collection[i];
//continua a fare quello che ti serve
}
}
else {
var newCollection = [];
newCollection.push(myObj);
$("#hdItem").val(JSON.stringify(newCollection));
}
}
Come ti sembra ?