JSONML checks childNode instead of the reserved childNodes attribute

Abierto Apto para principiantes
#1,080 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
88/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
java

Línea de trabajo

Comienza en JSONML.parse(), donde se muestra la comprobación de atributos reservados, y sigue la ruta de la forma de objeto que posteriormente almacena los hijos en childNodes. Añade cobertura de regresión para rechazar childNodes y conservar childNode; después ejecuta las pruebas relevantes de JSONML o la suite de pruebas y confirma que el análisis de la forma de array permanece sin cambios.

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

Descripción

The reserved-attribute check in JSONML.toJSONObject() checks childNode (singular), although the object representation uses childNodes (plural). As a result, a childNodes attribute is silently overwritten by the element's children, while an ordinary childNode attribute is rejected.

Reproduced on release 20260814 and current master (874673575807723d58bbec9ff1985668742940ce), with Java 17.0.20:

import org.json.JSONML;

System.out.println(JSONML.toJSONObject(
    "<p childNodes=\"metadata\">text</p>", true));
// {"childNodes":["text"],"tagName":"p"} -- attribute lost

System.out.println(JSONML.toJSONObject(
    "<p childNode=\"metadata\">text</p>", true));
// JSONException: Reserved attribute.

Expected: reject childNodes as reserved, as already happens for tagName, and preserve childNode as a regular attribute.

The check is in JSONML.parse(): "tagName".equals(attribute) || "childNode".equals(attribute). Later in the same method, newjo.put("childNodes", newja) overwrites the accepted attribute. Array-form parsing preserves both attribute names, so this affects the object form.

Lenguaje dominante
Java
Estrellas
4.7k
Forks
2.6k
Merge medio
6 d 20 h
PR fusionados (30 d)
2

Guía de contribución

Abrir la guía de contribución

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 stleary/JSON-java

Todos los issues de stleary/JSON-java

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.