Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

236
Vistas
ruta jsonpatch para actualizar el objeto de matriz por ID de objeto

Estoy tratando de descubrir la mejor manera de parchear una colección de objetos. Estoy tratando de cambiar el orden de clasificación de varios objetos y estaba pensando que jsonpatch puede ser el enfoque correcto. Mi objeto se parece a:

 [ { "ID": "100", "FirstName": "John", "LastName": "Smith", "Email": "jsmith@test.com", "SortOrder": 1 }, { "ID": "125", "FirstName": "John", "LastName": "Doe", "Email": "jdoe@test.com", "SortOrder": 3 }, { "ID": "50", "FirstName": "james", "LastName": "johnson", "Email": "jjohnson@test.com", "SortOrder": 2 }, ]

Creé un punto final que permite que una solicitud de parche actualice varios objetos en la colección usando una solicitud jsonpatch como esta:

 [ { "op": "replace", "path": "/1/SortOrder", "value": 2 }, { "op": "replace", "path": "/0/SortOrder", "value": 1 }, { "op": "replace", "path": "/2/SortOrder", "value": 3 } ]

Lo que quiero poder hacer es usar la propiedad ID en la ruta jsonpatch. ¿Es eso posible con mi estructura de objeto actual? Se vería algo como:

 [ { "op": "replace", "path": "/125/SortOrder", "value": 2 }, { "op": "replace", "path": "/100/SortOrder", "value": 1 }, { "op": "replace", "path": "/50/SortOrder", "value": 3 } ]

¿Qué tendría que hacer para poder hacer una solicitud de parche como esta?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Basado en el puntero Json RFC , no hay forma de seleccionar un elemento de una matriz por alguna propiedad. Dado que JSON Patch usa JSON Pointer, no tiene suerte.

Es una lástima que la gente de JSON Patch no haya seleccionado JSON Path , o algo similar, para el idioma de selección.

about 4 years ago · Santiago Trujillo Denunciar

0

prueba esta función:

 export function generateJsonPatch(obj: Object, patchObject = [], parent: string = null): Object[] { for (const key in obj) { if (obj.hasOwnProperty(key)) { if (obj[key] instanceof Object) { if (parent) { parent = parent + '/' + key; } else { parent = key; } generateJsonPatch(obj[key], patchObject, parent); } else if (obj[key]) { let fieldName; if (parent) { fieldName = parent + '/' + key; } else { fieldName = key; } const patchField = { op: 'replace', path: `/${fieldName}`, value: `${obj[key]}` }; patchObject.push(patchField); } } } return patchObject; } // USAGE: const test = { 'a': '1', 'b': '2', 'c': [{ 'd': '4', 'e': '5' }] }; generateJsonPatch(test); // it will generate // [{ "op": "replace", "path": "/a", "value": "1" }, // { "op": "replace", "path": "/b", "value": "2" }, // { "op": "replace", "path": "/c/0/d", "value": "4" }, // { "op": "replace", "path": "/c/1/e", "value": "5" }]

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda