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

125
Visualizações
Evite que node.js convierta un objeto anidado con claves numéricas en una matriz

Cuando tengo un objeto con un objeto anidado dentro, cuyas claves son números y lo envío a mi servidor node.js, entonces el objeto anidado se convierte en una matriz. ¿Cómo puedo prevenir esto?

Cliente:

 $.ajax({ url : `/cctool/report`, method : "PUT", data : { new : { 10 : "Test", 20 : "Hello", } } });

servidor :

 router.put("/cctool/report", (request, response) => { console.log(request.body); }

{ nuevo: [ 'Prueba', 'Hola' ] }

Cuando agrego una clave no numérica, todo funciona bien. También cuando las llaves están en el primer nivel.

Mi configuración:

 const express = require('express'); const CookieParser = require('cookie-parser'); const Sessions = require('express-session'); const crypto = require('crypto'); const router = express.Router(); router.use(express.json()); router.use(express.urlencoded({extended : true})); router.use(CookieParser()); router.use( Sessions({ secret : crypto.randomBytes(64).toString('hex'), saveUninitialized : false, cookie : {maxAge : 1000 * 60 * 60 * 8}, // 8 hours resave : false }));
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Intente agregar el encabezado contentType y usar JSON.stringify para serializar el objeto antes de pasar a $.ajax :

 const express = require("express"); const app = express(); const html = `<!DOCTYPE html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"> </script> </head> <body> <script> $.ajax({ url: "/cctool/report", method: "PUT", contentType: "application/json", data: JSON.stringify({ new: { 10: "Test", 20: "Hello", } }), success: data => console.log(data), }); </script></body></html>`; app .use(express.json()) .get("/", (req, res) => res.send(html)) .put("/cctool/report", (req, res) => { console.log(req.body); res.json(req.body); }) .listen(3000);

Ver jQuery publicando JSON .

about 4 years ago · Juan Pablo Isaza Relatório

0

Debe usar un valor de cadena como clave, si desea usar un número, debe convertirlo al tipo de cadena. Fuente: https://tc39.es/ecma262/#sec-object-type

 data : { new : { "10" : "Test", "20" : "Hello", } }
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