Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

JSON to XML: one root element for top-level arrays, and keep empty and nested arrays

Cerrado Apto para principiantes
#204 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@anurag2787 ya está trabajando en esto.

Desde el 19/10/2026.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
85/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
next.js, typescript
Área
tooling

Línea de trabajo

Empieza por toXML y su rama para arrays en lib/json-utils.ts y, después, revisa la prueba existente de toXML en lib/__tests__/json-utils.test.ts. Añade comprobaciones del texto de salida para arrays de nivel superior, vacíos y anidados, y para los casos de objetos sin cambios. La tarea estará completa cuando pasen todos los casos de aceptación enumerados y la salida de los objetos existentes siga igual.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug good first issue hacktoberfest

The JSON formatter's XML conversion (toXML in lib/json-utils.ts) gives broken XML when the JSON is an array, and it drops data for empty and nested arrays:

JSON XML now
[1,2] two <rootItem> elements and no root element, which isn't well-formed XML
[] only the <?xml ...?> line, with no element at all
{"a":[]} an empty <root>, so a is gone
{"a":[[1,2],[3]]} three <aItemItem> siblings, so [1,2] and [3] can't be told apart

Objects, and arrays inside objects, are fine today: {"users":[{"id":1},{"id":2}]} gives two <user> elements inside <root>, and that should stay as it is.

Where to look

  • lib/json-utils.ts: toXML (line 571) and the array branch of render (lines 579 to 584)
  • lib/__tests__/json-utils.test.ts: only one test touches toXML today (line 100), so add a describe("toXML") block
  • app/(tools)/json-formatter/components/ConversionPanel.tsx (line 59) is where the tool calls it

Acceptance criteria

  • A top-level array gives one <root> element with the items inside, so [1,2] gives <root> with two <rootItem> children
  • An empty array gives an empty element: [] gives <root/>, and {"a":[]} gives <a/> inside <root>
  • An array inside an array gets its own element, so {"a":[[1,2],[3]]} gives two <aItem> elements, the first with two <aItemItem> children and the second with one
  • Output for objects, and for arrays of values or objects inside objects, doesn't change
  • Tests check the output text for each case above (please don't add an XML parser as a dependency)
  • npm run lint, npm run test and npm run build pass

Want to work on this? Comment below and I'll assign it to you. Please take one issue at a time, branch off develop, and open your PR against develop with Closes #204 in the description.

Lenguaje dominante
TypeScript
Estrellas
1
Forks
9
Merge medio
10 h 24 min
PR fusionados (30 d)
93

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de codercops/toolbelt

Todos los issues de codercops/toolbelt

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.