Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

245
Views
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?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

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.

over 4 years ago · Santiago Trujillo Report

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" }]

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!