JSONML checks childNode instead of the reserved childNodes attribute
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 88/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- java
- Lĩnh vực
- backend-api-design
Hướng nghiên cứu
Bắt đầu tại JSONML.parse(), nơi phần kiểm tra thuộc tính dành riêng được hiển thị, và lần theo nhánh dạng đối tượng về sau lưu các nút con vào childNodes. Bổ sung kiểm thử hồi quy để từ chối childNodes trong khi vẫn giữ childNode, sau đó chạy các bài kiểm thử JSONML liên quan hoặc toàn bộ bộ kiểm thử và xác nhận rằng việc phân tích cú pháp dạng mảng vẫn không thay đổi.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Java
- Star
- 4.7k
- Fork
- 2.6k
- Merge trung bình
- 6 ngày 20 giờ
- Pull request đã merge (30 ngày)
- 2
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của stleary/JSON-java
-
Fix before the next release
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
New JSONPointer tests needed Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
-
Fix before the next release
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Active discussion
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
Tất cả issue của stleary/JSON-java
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
infinispan/infinispan#18150 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
-
untriaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
opensearch-project/k-NN#3597 ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100