Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

286
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda