> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/spanish/function-blocks/blocks-reference/data-logic/data-operations/parse-data-dictionary.md).

# Parse Data Dictionary

Este bloque de función extrae un único valor de un diccionario proporcionado como texto (JSON) o como objeto diccionario. Te permite elegir una clave del dato entrante y devuelve el valor asociado para usarlo en el resto del flujo.

## 📥 Entradas (Sockets) <a href="#inputs" id="inputs"></a>

`Input Dictionary (String)`\
Proporciona una cadena con formato JSON o un diccionario ya parseado. El ejemplo de formato que aparece en la interfaz te ayuda a preparar la entrada (por ejemplo: {"name": "product", "id": 345}).

## 📤 Salidas (Sockets) <a href="#outputs" id="outputs"></a>

`Output Data`\
El valor correspondiente a la clave seleccionada en el menú desplegable. Si la clave no existe o no hay entrada, la salida puede quedar vacía.

## 🕹️ Controles <a href="#controls" id="controls"></a>

`Select key from input data dict` Menú desplegable para elegir qué clave del diccionario entrante quieres extraer.

`Input example / helper text` Texto informativo que muestra un ejemplo de entrada (por ejemplo {"name": "product", "id": 345}) para guiarte.

## 🎯 Qué hace este bloque <a href="#features" id="features"></a>

* Lee automáticamente texto tipo JSON o entradas de diccionario y muestra las claves disponibles.
* Si las claves disponibles cambian, el desplegable se actualiza para que puedas seleccionar la nueva clave.
* Devuelve solo el valor seleccionado (no todo el diccionario), lo que facilita usar ese único dato en bloques posteriores.

## 📝 Cómo usar <a href="#usage" id="usage"></a>

1. Conecta una cadena JSON o un diccionario al socket `Input Dictionary (String)`.
2. Abre el desplegable `Select key from input data dict` y elige la clave cuyo valor necesitas.
3. El valor elegido aparecerá en el socket `Output Data` para que otros bloques lo utilicen.

## ⚙️ Comportamiento al ejecutarse <a href="#evaluation" id="evaluation"></a>

Al ejecutarse, el bloque comprueba la entrada. Si es una cadena que representa un diccionario, la parsea y lista las claves de primer nivel en el desplegable. Cuando eliges una clave, el bloque envía el valor asociado por `Output Data`. La lista del desplegable se actualiza automáticamente cuando llega una entrada diferente con otro conjunto de claves.

## 💡 Consejos y trucos <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Úsalo con bloques de comunicación para procesar mensajes entrantes:
  * Conecta la salida `Response` de `REST API - Get` para parsear respuestas de API.
  * Conecta la salida `Data` de `MQTT Subscribe` para extraer campos de mensajes entrantes.
* Úsalo con bloques de almacenamiento/flujo:
  * Alimenta las salidas de `Data Read Local` o `Data Read Global` para parsear diccionarios guardados.
  * Combínalo con `Data to JSON` si necesitas convertir datos estructurados a una cadena antes de extraer una clave aquí.
* Guardar o inspeccionar resultados:
  * Envía `Output Data` extraído a `CSV Export` o `Image Logger` (si guardas metadatos) para registro.
  * Usa `Debug Input` para inspeccionar rápidamente el valor parseado durante el desarrollo.
* Sugerencia de validación: si pruebas manualmente, intenta enviar un valor desde `String Input` para confirmar que el desplegable se llena correctamente.

## 🛠️ Solución de problemas <a href="#troubleshooting" id="troubleshooting"></a>

* No aparece nada en el desplegable: asegúrate de que la entrada sea una cadena JSON válida o un objeto diccionario y que contenga claves de primer nivel.
* Formato de entrada inválido: proporciona texto con estilo JSON (claves y cadenas entre comillas) o un diccionario correcto desde bloques anteriores.
* La clave seleccionada devuelve salida vacía: confirma que la clave exista en la entrada actual y que hayas seleccionado la entrada correcta en el desplegable.
* Las claves cambian pero el desplegable no se actualiza: envía un nuevo diccionario (o vuelve a evaluar el bloque upstream) para que el bloque detecte el nuevo conjunto de claves y actualice la lista.
