Obtener la longitud de un objeto JSON
Obtener la longitud o número de elementos dentro de un objeto JSON se obtiene tomando en cuenta el número de claves en el objeto y eso se obtiene con:
Object.keys(Object).length;
Ejemplo:
<script>
var matriz1 = {'nombre':'Juan','paterno':'Perez','materno':'Perez'};
function longitudJSON(matriz){
var n_elementos = Object.keys(matriz).length;
return n_elementos;
}
console.log("Total: "+longitudJSON(matriz1));
</script>
Lo cual imprime en la consola:
Total: 3
Saludos
jueves, 1 de agosto de 2019
Obtener la longitud de un objeto JSON
Uso de JSON.stringify y JSON.parser
Desarrollando una pequeña aplicación de un formulario que recuperaba los datos a través de una función y lo pasaba a otra me encontraba que no podia ver o usar el objeto que tenia. Además, al querer ver los datos con el console log me daba error
SyntaxError: Unexpected token o in JSON at position 1
y no podia recuperar los datos.
Resulta ser que aplicaba mal el uso de datos las funciones
JSON.stringify y JSON.parse
Cuando nosotros usamos JSON.stringify convertimos al obj JSON en string y,
JSON.parse lo regresa a ser un Object.
por ejemplo, si creas un objeto
var matriz1 = {};
matriz1.a = 9
y aplicas
console.log(matriz1);
obtienes
[object Object]
pero
console.log(matriz1.a)
te da
9
Si aplicas
console.log(JSON.stringify(matriz1))
imprime
{"a":9}
De tal manera que aplicar un JSON.stringify en un paso previo requiere regresar los datos a su formato de objeto con JSON.parse en un paso futuro para su uso adecuado.
Ahora bien, se puede dar el caso de que los datos que obtienes de algún origen no vengan formateados, entonces, tenemos que convertir en string los datos y luego parsearlos. Por ejemplo:
SyntaxError: Unexpected token o in JSON at position 1
y no podia recuperar los datos.
Resulta ser que aplicaba mal el uso de datos las funciones
JSON.stringify y JSON.parse
Cuando nosotros usamos JSON.stringify convertimos al obj JSON en string y,
JSON.parse lo regresa a ser un Object.
por ejemplo, si creas un objeto
var matriz1 = {};
matriz1.a = 9
y aplicas
console.log(matriz1);
obtienes
[object Object]
pero
console.log(matriz1.a)
te da
9
Si aplicas
console.log(JSON.stringify(matriz1))
imprime
{"a":9}
De tal manera que aplicar un JSON.stringify en un paso previo requiere regresar los datos a su formato de objeto con JSON.parse en un paso futuro para su uso adecuado.
Ahora bien, se puede dar el caso de que los datos que obtienes de algún origen no vengan formateados, entonces, tenemos que convertir en string los datos y luego parsearlos. Por ejemplo:
JSON.parse(JSON.stringify(matriz1))
Espero te sirva la información.
Saludos
Etiquetas:
javascript,
json,
object,
parse,
stringify
jueves, 25 de julio de 2019
Error CS0234: The type or namespace name 'Debug' does not exist in the namespace 'Microsoft.Extensions.Logging' OSX windows
Error CS0234: The type or namespace name 'Debug' does not exist in the namespace 'Microsoft.Extensions.Logging' (are you missing an assembly reference?) (CS0234)
Estoy trabajando un proyecto con otras personas de ASPNETCore
Cuando intento compilar la aplicación me genera el siguiente error:
Error CS0234: The type or namespace name 'Debug' does not exist in the namespace 'Microsoft.Extensions.Logging' (are you missing an assembly reference?) (CS0234)
y el warning
/Library/Frameworks/Mono. framework/Versions/5.18.1/lib/ mono/msbuild/Current/bin/ Microsoft.Common. CurrentVersion.targets(5,5): Warning MSB3245: No se pudo resolver esta referencia. No se encuentra el ensamblado "Microsoft.Extensions.Logging. Debug". Compruebe si el ensamblado existe en el disco. Si el código necesita esta referencia, podrían producirse errores de compilación. (MSB3245)
Quien realizo la base del proyecto inicio en windows y en mi caso yo estoy usando una Mac, con OSX
Después de varios días sin encontrar como resolverlo, me dieron un consejo, ejecutar: dontnet run en el directorio del proyecto.
Eso genero el mismo error, pero me permitió saber por donde iba el problema.
Resulta ser que se configuro una dependencia y el conflicto hacia referencia a una librería que no tenía en el archivo del proyecto: /Users/usuario/Documents/proyecto/src/terra/terra.csproj
Microsoft.Extensions.Logging. Debug
y que además hace referencia a una ruta que es de windows.
x
Solución
Buscar el directorio donde deben estar instaladas las librerías del core en osx, en la consola con el comando:
find / -name NuGetFallbackFolder
Resultado:
/usr/local/share/dotnet/sdk/NuGetFallbackFolder/
Entonces, debemos editar el archivo del proyecto
/Users/usuario/Documents/proyecto/src/terra/terra.csproj
Actualizar la línea:
y una vez instalado, compilar su aplicación.
Ahora ya puede visualizar su aplicación =)
Estoy trabajando un proyecto con otras personas de ASPNETCore
Cuando intento compilar la aplicación me genera el siguiente error:
Error CS0234: The type or namespace name 'Debug' does not exist in the namespace 'Microsoft.Extensions.Logging' (are you missing an assembly reference?) (CS0234)
y el warning
/Library/Frameworks/Mono.
Quien realizo la base del proyecto inicio en windows y en mi caso yo estoy usando una Mac, con OSX
Después de varios días sin encontrar como resolverlo, me dieron un consejo, ejecutar: dontnet run en el directorio del proyecto.
Eso genero el mismo error, pero me permitió saber por donde iba el problema.
error CS0234: The type or namespace name 'Debug' does not exist in the namespace 'Microsoft.Extensions.Logging' (are you missing an assembly reference?) [/Users/usuario/Documents/proyecto/src/terra/terra.csproj]
Resulta ser que se configuro una dependencia y el conflicto hacia referencia a una librería que no tenía en el archivo del proyecto: /Users/usuario/Documents/proyecto/src/terra/terra.csproj
Microsoft.Extensions.Logging.
y que además hace referencia a una ruta que es de windows.
<ItemGroup>
<Reference Include="Microsoft.Extensions.Logging.Debug">
<HintPath>..\..\..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.logging.debug\2.1.1\lib\netstandard2.0\Microsoft.Extensions.Logging.Debug.debug.dll</HintPath>
</Reference>
</ItemGroup>
x
Solución
Buscar el directorio donde deben estar instaladas las librerías del core en osx, en la consola con el comando:
find / -name NuGetFallbackFolder
Resultado:
/usr/local/share/dotnet/sdk/NuGetFallbackFolder/
Entonces, debemos editar el archivo del proyecto
/Users/usuario/Documents/proyecto/src/terra/terra.csproj
Actualizar la línea:
<HintPath>/usr/local/share/dotnet/sdk/NuGetFallbackFolder/microsoft.extensions.logging.debug/2.1.1/lib/netstandard2.0/Microsoft.Extensions.Logging.Debug</HintPath>
Guardar los cambios
Ir a Visual Studio
Dar clic en Agregar-> Agregar paquetes NuGet
Buscar Microsoft.Extensions.Logging.Debug
y Dar clic en el botón Agregar paquetes
Aceptar las licencias
y una vez instalado, compilar su aplicación.
Ahora ya puede visualizar su aplicación =)
lunes, 15 de julio de 2019
Modificar propiedades css datepicker button
Modificar propiedades css datepicker button
$( "#fecha" ).datepicker({
nextText: "Siguiente",
prevText: "Anterior",
showWeek: false,
showOn: "both",
buttonText: "Calendar",
buttonImage: "imagen/icono.png"
});
El ícono aparece con fondo de un botón, que toma el tamaño original de la imagen; para personalizarlo debemos modificar su css.
Usando el inspector del navegador vemos que la clase es .ui-datepicker-trigger
entonces, el icono del botón lo modificamos con :
/*icono de button*/
.ui-datepicker-trigger{
border: 0px;
width:40px;
height:40px;
}
y la imagen contenida:
/*icono de button image*/
.ui-datepicker-trigger>img{
width:35px;
height:35px;
}
así tendremos un botón más acorde a lo que deseamos.
Saludos y éxito en sus proyectos.
lunes, 1 de julio de 2019
Visualizar imágenes almacenadas de Google Driven en un sitio externo o aplicación
Visualizar imágenes almacenadas de Google Drive en un sitio externo o aplicación
Si usted tiene almacenadas imágenes en Drive de google en alguna carpeta o contenedor y desea utilizar esa imagen como referencia en algún sitio o servicio, debe usar el siguiente vínculo y el fileid de la siguiente manera:
https://drive.google.com/uc?export=view&id={fileId}
Para que esto funcione, de clic derecho sobre el archivo y seleccione compartir
Debe compartir la imagen como Cualquiera con el vínculo puede ver, luego, copie el vínculo y obtenga de ahí el fileId
https://drive.google.com/file/d/00000FFFFF0000999/view?usp=sharing
Agregue la etiqueta y el vínculo a su código.
<img src="https://drive.google.com/uc?export=view&id=00000FFFFF0000999" width="200" />
Funcionará siempre y cuando no sea un recurso muy solicitado, en caso contrario tendrá que pagar el servicio de uso.
Saludos y excelente verano 👀
Si usted tiene almacenadas imágenes en Drive de google en alguna carpeta o contenedor y desea utilizar esa imagen como referencia en algún sitio o servicio, debe usar el siguiente vínculo y el fileid de la siguiente manera:
https://drive.google.com/uc?export=view&id={fileId}
Para que esto funcione, de clic derecho sobre el archivo y seleccione compartir
Debe compartir la imagen como Cualquiera con el vínculo puede ver, luego, copie el vínculo y obtenga de ahí el fileId
https://drive.google.com/file/d/00000FFFFF0000999/view?usp=sharing
Agregue la etiqueta y el vínculo a su código.
<img src="https://drive.google.com/uc?export=view&id=00000FFFFF0000999" width="200" />
Funcionará siempre y cuando no sea un recurso muy solicitado, en caso contrario tendrá que pagar el servicio de uso.
Saludos y excelente verano 👀
sábado, 16 de marzo de 2019
Error de conexión a Mysql: Server sent charset (255) unknown to the client
Por algunas circunstancias formatee mi computadora con windows 10. Todo iba bien hasta que una vez instalado Mysql 8.0 CE; intente entrar a phpmyadmin y me regreso el siguiente error:
"mysqli_real_connect(): Server sent charset (255) unknown to the client. Please, report to the developers"
"mysqli_real_connect(): (HY000/2054): Server sent charset unknown to the client. Please, report to the developers"
Buscando en internet nos comentan que se debe al cambio de configuración del chartset por default, entonces debemos ajustar configuración de nuestro mysql.
Solución
Editaremos el archivo de configuración my.cnf
El cual se debe encontrar en C:\ProgramData\MySQL\MySQL Server 8.0
Agregamos y/o modificamos las siguientes lineas:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
Una vez hecho esto, reinicien su servicio de Mysql
e ingresen a su aplicación o a su phpmyadmin
Enhorabuena, pueden utilizar su conexión de nuevo.
"mysqli_real_connect(): Server sent charset (255) unknown to the client. Please, report to the developers"
"mysqli_real_connect(): (HY000/2054): Server sent charset unknown to the client. Please, report to the developers"
Buscando en internet nos comentan que se debe al cambio de configuración del chartset por default, entonces debemos ajustar configuración de nuestro mysql.
Solución
Editaremos el archivo de configuración my.cnf
El cual se debe encontrar en C:\ProgramData\MySQL\MySQL Server 8.0
Agregamos y/o modificamos las siguientes lineas:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
Una vez hecho esto, reinicien su servicio de Mysql
e ingresen a su aplicación o a su phpmyadmin
Enhorabuena, pueden utilizar su conexión de nuevo.
Etiquetas:
apache2,
charset,
conexión,
developers,
error,
mysql,
mysqli_real_connect,
php,
phpmyadmin,
utf8,
windows
jueves, 25 de octubre de 2018
Acceder a mysql con root y también cambiar contraseña.
Si por alguna razón deseas acceder como el usuario de root a las bases de datos debemos cambiar algunos datos de la tabla mysql.
Aplicado en mysql 5
1. Entramos a mysql
$ sudo mysql -u root mysql
2. Revisamos la tabla user
mysql> select * from user;
3. Cambiamos el valor del plugin de auth_socket a mysql_native_password del usuario root
mysql> UPDATE user SET plugin="mysql_native_password" WHERE User='root';
4. Aplicamos los cambios
mysql> flush privileges;
5. Salimos de la conexión actual
mysql>quit
6. Ahora ingresamos normalmente
$mysql -u root mysql
enter password:
7. Si todo sale correcto habrás ingresado
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: ******************** (Ubuntu)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Adicional: cambiar contraseña
8. Dentro de la conexión lanzamos la siguiente consulta
mysql> UPDATE user SET authentication_string=PASSWORD("nuevaclave") WHERE User='root';
9. Aplicamos los cambios
mysql> flush privileges;
10. Salimos de la conexión actual
mysql>quit
11. Reiniciamos el servicio
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
12. Probamos con el nuevo password
Todo debe salir perfecto.
Aplicado en mysql 5
1. Entramos a mysql
$ sudo mysql -u root mysql
2. Revisamos la tabla user
mysql> select * from user;
3. Cambiamos el valor del plugin de auth_socket a mysql_native_password del usuario root
mysql> UPDATE user SET plugin="mysql_native_password" WHERE User='root';
4. Aplicamos los cambios
mysql> flush privileges;
5. Salimos de la conexión actual
mysql>quit
6. Ahora ingresamos normalmente
$mysql -u root mysql
enter password:
7. Si todo sale correcto habrás ingresado
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: ******************** (Ubuntu)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Adicional: cambiar contraseña
8. Dentro de la conexión lanzamos la siguiente consulta
mysql> UPDATE user SET authentication_string=PASSWORD("nuevaclave") WHERE User='root';
9. Aplicamos los cambios
mysql> flush privileges;
10. Salimos de la conexión actual
mysql>quit
11. Reiniciamos el servicio
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
12. Probamos con el nuevo password
Todo debe salir perfecto.
Suscribirse a:
Entradas (Atom)