JSONML checks childNode instead of the reserved childNodes attribute

Đang mở Phù hợp với người mới
#1,080 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

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

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của stleary/JSON-java

Tất cả issue của stleary/JSON-java

Issue tương tự

Thêm issue về Java

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.