JSONML checks childNode instead of the reserved childNodes attribute
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
- Área
- backend-api-design
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
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de stleary/JSON-java
-
Fix before the next release
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
New JSONPointer tests needed Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Fix before the next release
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Active discussion
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Todos los issues de stleary/JSON-java
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
infinispan/infinispan#18150 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
-
untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
opensearch-project/k-NN#3597 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100