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

278
Views
¿Por qué mi literal JSON esperado es 'nulo' y cómo lo soluciono?

Actualmente estoy trabajando en la creación de un back-end impulsado por API utilizando .Net Core con autenticación de Windows. Intentar publicar datos en este backend da como resultado un error 400:

"'noticeNumber=Hello%2C%20world!' is an invalid JSON literal. Expected the literal 'null'. Path: $ | LineNumber: 0 | BytePositionInLine: 1."

Actualmente, la API está configurada para recibir un objeto que contiene datos en un recibo. Una de las propiedades de este objeto es un ID para avisos generados en otras aplicaciones. Esta y todas las demás propiedades son anulables:

 // Receipts Controller. [ApiController] [Route("receipts")] public class ReceiptsController : Controller { [HttpPost("post_insertReceipt")] public Task<IActionResult> InsertReceipt(ReceiptForm receipt) { try {/* ... */} catch { /* ... */ } } } //Receipt Form VM public class ReceiptForm { public string? NoticeNumber { get; set; } /*... */ }

El Javascript y jQuery utilizados para llamar a la API se ven así:

 var data2 = { noticeNumber: "Hello, world!" } $.ajax({ url: "https://localhost:portNumber/receipts/post_insertReceipt", type: "POST", xhrFields: { withCredentials: true }, contentType: "application/json", data: data2, success: function(data) { /* Display success alert */ }, error: function(xhr) { /* display error alert */ } })

Según tengo entendido, la sintaxis del objeto de datos es correcta, pero algo claramente no está de acuerdo. Intenté publicar nulos como datos, solo para obtener un error por haber publicado datos.

Entonces, ¿por qué el literal esperado es 'nulo'? ¿Qué determina el literal esperado, por qué y cómo soluciono este problema?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El comentario de @DavidG en la publicación principal revela mi error. Las API se comunican con objetos que se han serializado en cadenas JSON.

Mi experiencia previa con MVC no basado en API me llevó a concluir que simplemente podía pasar el objeto Javascript al campo de datos de $.ajax como se puede hacer; ese no es el caso.

Los datos deben analizarse en una cadena JSON serializada con JSON.Stringify() para que la API los procese correctamente.

 $.ajax({ url: "https://localhost:portNumber/receipts/post_insertReceipt", type: "POST", xhrFields: { withCredentials: true }, contentType: "application/json", data: JSON.stringify(data2), success: function(data) { /* Display success alert */ }, error: function(xhr) { /* display error alert */ } })
about 4 years ago · Juan Pablo Isaza 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!