tengo el ff Carga útil JSON de una matriz
{ "Meta": { "LastAvailableDateTime": "", "FirstAvailableDateTime": "", "TotalPages": 1, "Count": 2 }, "Links": { "Next": null, "Previous": null, "Self": "" }, "Data": { "Transactions": [ { "AuthCode": "175601", "CardId": "************8104" }, { "AuthCode": "783453", "CardId": "************8104" }, { "AuthCode": "12132", "CardId": "************8104" } ] } }Y quiero anular esta carga útil cambiando el nombre de CardId a MaskedCardId y agregando un nuevo parámetro llamado CardId con una ID de tarjeta real.
Mi código es el ff. abajo
var json = //The Parsed JSON Payload; var CardId = "123458104" json = JSON.parse( JSON.stringify(json).split('"CardId":') .join('"CardId":CardId,"MaskedCardId":') );Ya podría reemplazar CardId con el parámetro renombrado llamado MaskedCardId. con el ff código
json = JSON.parse(JSON.stringify(json).split('"CardId":').join('"MaskedCardId":'));Pero cada vez que trato de agregar un nuevo parámetro llamado CardId con un valor variable, está dando un error de.
falló con el error: error de tiempo de ejecución de Javascript: "SyntaxError: token inesperado: C
¿Cómo hago que esta línea de código funcione con mi propósito previsto? AIT
Recuerda el valor antiguo
const data = { "AuthCode": "1", "PostingDate": "2021-05-06", "Amount": "6000.28", "CardId": "************8104", }; const CardIdNew = "123458104"; const CardIdOld = data.CardId; data.CardId = CardIdNew; data.MaskedCardId = CardIdOld; console.log(data);O para decirlo más simple:
const data = { "AuthCode": "1", "PostingDate": "2021-05-06", "Amount": "6000.28", "CardId": "************8104", }; data.MaskedCardId = data.CardId; // Add data.CardId = "123458104"; // Override console.log(data);ANEXO después de la edición de la pregunta
Haga un bucle en la matriz que contiene las transacciones:
const json = {"Meta":{"LastAvailableDateTime":"","FirstAvailableDateTime":"","TotalPages":1,"Count":2},"Links":{"Next":null,"Previous":null,"Self":""},"Data":{"Transactions":[{"AuthCode":"175601","CardId":"************8104"},{"AuthCode":"783453","CardId":"************8104"},{"AuthCode":"12132","CardId":"************8104"}]}}; const CardId = "123458104" json.Data.Transactions.forEach(ob => { ob.MaskedCardId = ob.CardId; ob.CardId = CardId; }); console.log(json);Supongo que esto debería funcionar. La combinación debe ser así .join('"CardId":"' + CardId + '", "MaskedCardId":') ya que está agregando una variable de cadena al objeto, no olvide poner "' + CardId + '" :
var json = //The Parsed JSON Payload; var CardId = "123458104" json = JSON.parse( JSON.stringify(json).split('"CardId":') .join('"CardId":"' + CardId + '", "MaskedCardId":') ); var json = { someId: 10, somekey: "somevalue", cards: [ { CardId: "*********67", otherkey: "othervalue" }, { CardId: "*********67", otherkey: "othervalue" } ] } var CardId = "123458104" json = JSON.parse( JSON.stringify(json).split('"CardId":') .join('"CardId":"' + CardId + '", "MaskedCardId":') ); console.log(json);Dividir y unir son para cadenas; manipule el JSON como un objeto en su lugar.
json.MaskedCardId = json.CardId; json.CardId = CardId;