elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  JSON PHP return de json_decode($json) no es un objeto?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: JSON PHP return de json_decode($json) no es un objeto?  (Leído 2,857 veces)
@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
JSON PHP return de json_decode($json) no es un objeto?
« en: 23 Diciembre 2019, 19:56 pm »

Estoy pasando un JSON por XHR a una función PHP que hice para hacer requests a directorios.

Me sale un error que no consigo solventar. Me dice: Trying to get nod propertie of non-object.
Y en otra línea: Trying to get nd propertie of non-object.

El echo a $rawReq me imprime el json exactamente igual que como yo lo mandé. El JSON es igual que el del comentario.

Mi pregunta es como solucionar el error, no como hacerlo de otra forma.

Código
  1. /*
  2. Get Request From Client holding list of Domains to hunt, plus list of dictionary urls to get. Expecting a json like:
  3. {
  4. nod: 2,
  5. domain0: "google.com",
  6. domain1: "yahoo.es",
  7. nd: 1,
  8. dictionary0: "raw.github..."
  9. }
  10.  
  11. * domains->nod = number of domains *
  12.  
  13. * domains->nd = number dictionaries *
  14.  
  15. */  
  16. function GRFC(array &$arr)
  17. {
  18. $rawReq = file_get_contents('php://input');
  19. echo "$rawReq";
  20. $domains = json_decode($rawReq);
  21. $temp = "";
  22. $arrayDomains = [];
  23. $x = 0;
  24.  
  25.    for($i = 0; $i < $domains->nod; ++$i)
  26.    {
  27.    $temp = "domain";
  28.    $temp += $i;
  29.    $arrayDomains[i] = $domains->$temp;
  30.    $x = $i;
  31.    }
  32.  
  33.   for($i=0; $x < $domains->nd; ++$x)
  34.   {
  35.   $temp = "dictionary";
  36.   $temp +=$i; ++$i;
  37.   $arr[i] = $domains->$temp;
  38.   }
  39.  
  40. return $arrayDomains;
  41. }
  42. $domainsToHunt = GRFC($dictionariesToHunt);


« Última modificación: 23 Diciembre 2019, 19:57 pm por @?0!,5^34 » En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: JSON PHP return de json_decode($json) no es un objeto?
« Respuesta #1 en: 24 Diciembre 2019, 08:16 am »

Acabo de darme cuenta del error, los nombres las propiedades nod, domain0, domain1, nd y dictionary deben de ir entre comillas dobles.

Código:
{
"nod": 2,
"domain0": "google.com",
"domain1": "yahoo.es",
"nd": 1,
"dictionary0": "raw.github..."
}

Saludos!


En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: JSON PHP return de json_decode($json) no es un objeto?
« Respuesta #2 en: 24 Diciembre 2019, 08:26 am »

Acabo de darme cuenta del error, los nombres las propiedades nod, domain0, domain1, nd y dictionary deben de ir entre comillas dobles.

Código:
{
"nod": 2,
"domain0": "google.com",
"domain1": "yahoo.es",
"nd": 1,
"dictionary0": "raw.github..."
}

Saludos!
Entonces porque lo llaman javascript object notation? En js es válido '--

Tenía una función con arrays/strings con el json a mano y al final opté por rescribirla toda como un objeto y pasarle stringify por mi salud mental. xD

Gracias
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: JSON PHP return de json_decode($json) no es un objeto?
« Respuesta #3 en: 24 Diciembre 2019, 09:16 am »

Entonces porque lo llaman javascript object notation? En js es válido '--

Jajaja ya se, segun tengo entendido del lado de javascript es un poco mas permisivo con los objetos a la hora de procesarlos, pero PHP es mas estricto.

Como mandas tu data desde el cliente javascript, yo utilizo ajax o fetch y nunca he tenido ese tipo de detalles con el PHP en el backend

Código:
data:JSON.stringify(objeto)

Saludos!
« Última modificación: 24 Diciembre 2019, 18:29 pm por AlbertoBSD » En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: JSON PHP return de json_decode($json) no es un objeto?
« Respuesta #4 en: 24 Diciembre 2019, 15:22 pm »

Jajaja ya se, segun tengo entendido del lado de Javascrip es un poco mas permisivo con los objetos a la hora de procesarlos, pero PHP es mas estricto.

Como mandas tu data desde el cliente javascript, yo utilizo ajax o fetch y nunca he tenido ese tipo de detalles con el PHP en el backend

Código:
data:JSON.stringify(objeto)

Saludos!
Uso el submit de los forms o xmlHttpRequest. Fetch no lo uso porque de momento para el tipo de cosas que hago no me aporta mucho y me daría dolores de cabeza tener que mirar como remplazarlo por un polyfill.
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: JSON PHP return de json_decode($json) no es un objeto?
« Respuesta #5 en: 24 Diciembre 2019, 15:28 pm »

js en los navegadores es muuuuuucho mas permisivo que lo que establece el standard, pero usualmente los otros lenguajes se apegan mucho al sandard
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: JSON PHP return de json_decode($json) no es un objeto?
« Respuesta #6 en: 24 Diciembre 2019, 19:29 pm »

Entonces porque lo llaman javascript object notation? En js es válido '--

Tenía una función con arrays/strings con el json a mano y al final opté por rescribirla toda como un objeto y pasarle stringify por mi salud mental. xD

Gracias

Es un subset de la notación de JS. Tampoco puedes usar números en la notación:

Código
  1. ({ 0:1 , 2:3 }) //js valido, json invalido

La notación solo permite notación de strings como llaves hasta donde yo tengo entendido.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[C#] Deserializar JSON
.NET (C#, VB.NET, ASP)
Siuto 1 4,812 Último mensaje 9 Septiembre 2010, 17:55 pm
por [D4N93R]
json
Desarrollo Web
samrofi 0 1,740 Último mensaje 8 Agosto 2012, 16:31 pm
por samrofi
Ayuda con JSON
Desarrollo Web
spysecurityca 8 2,900 Último mensaje 26 Julio 2014, 03:41 am
por engel lex
Duda con JSON y PHP
Programación General
Toracos 0 1,595 Último mensaje 9 Enero 2015, 16:23 pm
por Toracos
[Resuelto] [Newbie] No puedo acceder a objeto JSON enviado por AJAX
PHP
iGust4v0x 8 4,356 Último mensaje 14 Enero 2015, 21:46 pm
por iGust4v0x
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines