• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Simulador FIRE (Financial Independence, Retire Early)
    • Herramientas
      • Formateador / Minificador de JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Lectura de JSON con vectores en Matlab

junio 17, 2019 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 4 minutos

En una entrada anterior se ha explicado cómo se pueden leer archivos JSON desde Matlab. Allí se había mostrado el proceso básico de importación y la lectura de valores, pero no lo que es necesario hacer cuando los valores de los campos contienen datos más complejos como vectores de objetos. Siendo estos los pasos que se van a explicar en esta entrada: cómo realizar la lectura de JSON con vectores en Matlab.

El archivo JSON

Antes de comenzar es necesario disponer de un archivo JSON, para ello se puede utilizar el siguiente.

{
    "date": "2019-05-01",
    "users": [
        [{
            "name": "Alice",
            "amount": 100
        }, {
            "name": "Bob",
            "amount": -200
        }, {
            "name": "Charlie",
            "amount": 300
        }, {
            "name": "Dennis",
            "amount": 400
        }, {
            "name": "Edith",
            "amount": -500
        }]
    ],
    "transactions": [{
        "from": "Alice",
        "to": "Bon",
        "amount": 200,
        "tax": 20
    }, {
        "from": "Charlie",
        "to": "Dennis",
        "amount": 50
    }]
}

En este se puede ver que existen tres propiedades: date, users y transactions. El primero, la fecha, es una cadena de texto. Siendo este una propiedad que no presenta ningún problema. Por otro lado, la segunda, los usuarios, es un listado con los usuarios y su saldo disponible. Finalmente, el tercero, las transacciones, contiene diferentes operaciones en las que pueden existir o no valores como tax.

Nueva calculadora de préstamos e hipotecas en el laboratorio de aplicaciones de Analytics Lane
En Analytics Lane
Nueva calculadora de préstamos e hipotecas en el laboratorio de aplicaciones de Analytics Lane

Importación de los datos

La importación de los archivos JSON en Matlab se tiene que hacer en dos pasos, en primer lugar, se han de leer el archivo y posteriormente decodificarlo. Lo que se hace respectivamente con fileread y jsondecode. Así para importar todo el archivo en una variable es necesario ejecutar el siguiente código.

values = jsondecode(fileread('data.json'));

Para obtener los valores de las fechas se puede utilizar lo que se explicó en la entrada anterior. Pero si se hace esto para los nombres de los usuarios no se obtiene el valor esperado.

date = values.date
name = values.users.name
date =

    '2019-05-01'


name =

    'Alice'

Al ejecutar este pequeño trozo de código se puede ver que solamente se obtienen un nombre de la lista. Esto es así porque values.users es un vector de estructuras. Cuando se accede una propiedad de un vector de este tipo y no se indica el índice Matlab va a leer solamente el primero. Para leer todos dos valores es necesario iterar a través de este vector como se muestra a continuación.

for i = 1:length(values.users)
    fprintf('User: %s, amount: %d\n', values.users(i).name, values.users(i).amount);
end
User: Alice, amount: 100
User: Bob, amount: -200
User: Charlie, amount: 300
User: Dennis, amount: 400
User: Edith, amount: -500

En donde se puede observar cómo se pueden leer todos los valores de la propiedad users.

Publicidad


Importación de registros con datos heterogéneos

En el caso de la propiedad transactions podemos ver que los datos que contiene esta son diferente para cada uno de los registros. En tal caso los valores de la propiedad no se cargarán como un vector, sino como una celda de objetos. Siendo necesario tener esto en cuenta a la hora de operar con los valores. En primer lugar, para acceder a unos registros se tiene que utilizar llaves en lugar de paréntesis. Por otro lado, cada vez que se pretenda leer un registro será necesario comprobar si este existe o no. Así en nuestro ejemplo podríamos iterar con el siguiente código.

for i = 1:length(values.transactions)
    if isfield(values.transactions{i}, 'tax')
        fprintf('[%s, %s, %d, %d]\n', values.transactions{i}.from, ...
            values.transactions{i}.to, values.transactions{i}.amount, ...
            values.transactions{i}.tax);
    else
         fprintf('[%s, %s, %d]\n', values.transactions{i}.from, ...
            values.transactions{i}.to, values.transactions{i}.amount);
    end
end
[Alice, Bon, 200, 20]
[Charlie, Dennis, 50]

En donde se tiene comprueba antes de imprimir los resultados si el campo tax existe o no, ya que este es opcional.

Comprobar si es una celda o un vector

Dado que es necesario iterar de una forma diferente en cada ocasión puede ser necesario comprobar si lo que se tiene es una celda o un vector. En el caso de valores cuyos valores tiene que se siempre iguales no habría problema, siempre se tiene un vector. Pero, en el caso de que los valores pudiesen ser diferentes se podrán dar los dos casos. Así antes de iterar se puede comprobar el tipo de dato con iscell.

Conclusiones

En esta entrada se han visto cómo realizar la lectura de JSON con vectores en Matlab. Algo que se complica a medida que se complica la complejidad de los datos importados. A la hora de importar datos desde archivos JSON es necesario saber qué datos pueden venir, en que estructuras y preparar el código para tener en cuenta las opciones con las que se puede enfrentar.

Imágenes: Pixabay (Free-Photos)

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicidad


Publicaciones relacionadas

  • Nuevo detector de la Ley de Benford en el laboratorio de aplicaciones de Analytics Lane
  • Nuevo simulador de regresión lineal con ruido en el laboratorio de aplicaciones de Analytics Lane
  • Nuevo simulador de regresión logística en el laboratorio de aplicaciones de Analytics Lane
  • Nuevo Inspector de JWT en el laboratorio de aplicaciones de Analytics Lane
  • Nueva Calculadora de Estadísticos Descriptivos en el laboratorio de aplicaciones de Analytics Lane
  • Chatbots vs redes sociales: la diferencia clave entre la inteligencia artificial y los algoritmos de recomendación – Conversar con una inteligencia artificial – Parte II
  • Nueva herramienta: Comparador y Formateador de Texto y JSON en el laboratorio de Analytics Lane

Publicado en: Matlab

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Nueva herramienta: Comparador y Formateador de Texto y JSON en el laboratorio de Analytics Lane

abril 21, 2026 Por Daniel Rodríguez

Chatbots vs redes sociales: la diferencia clave entre la inteligencia artificial y los algoritmos de recomendación – Conversar con una inteligencia artificial – Parte II

abril 21, 2026 Por Daniel Rodríguez

Nueva Calculadora de Estadísticos Descriptivos en el laboratorio de aplicaciones de Analytics Lane

abril 20, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Buscar en Excel con dos o más criterios publicado el septiembre 7, 2022 | en Herramientas
  • Gráfica con los datos y las anomalías detectadas con OneClass SVM One-Class SVM: Detección de anomalías con máquinas de vector soporte publicado el marzo 15, 2024 | en Ciencia de datos
  • Nueva herramienta: Comparador y Formateador de Texto y JSON en el laboratorio de Analytics Lane publicado el abril 21, 2026 | en Noticias
  • Método del codo (Elbow method) para seleccionar el número óptimo de clústeres en K-means publicado el junio 9, 2023 | en Ciencia de datos
  • Cómo desinstalar Oracle Database 19c en Windows publicado el noviembre 25, 2022 | en Herramientas

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.9 (11)

Pandas: Cambiar los tipos de datos en los DataFrames

Comentarios recientes

  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto