Skip to content

Merge latest changes from stleary/JSON-java#1

Open
tfredrich wants to merge 1427 commits into
tfredrich:masterfrom
stleary:master
Open

Merge latest changes from stleary/JSON-java#1
tfredrich wants to merge 1427 commits into
tfredrich:masterfrom
stleary:master

Conversation

@tfredrich

Copy link
Copy Markdown
Owner

Catch up.

Simulant87 and others added 30 commits March 22, 2024 12:08
test(#871-strictMode): adjusted related tests, add more test cases for non-compliant quotes in strict mode
chore: removed PII from json sample
chore: JSONParserConfiguration.java cleanup
chore: JSONTokener.java nextValue partial rollback
This got accidentally left out in the last release
StrictMode Implementation for JSONArray
pratiktiwari13 and others added 30 commits January 2, 2026 21:20
Add type checking before casting parse() results to JSONArray/JSONObject.
When parse() returns an unexpected type (e.g., String for malformed input),
the code now throws a descriptive JSONException instead of ClassCastException.

This prevents unchecked exceptions from propagating to callers who only
expect JSONException from these methods.

Fixes #1034
Fix StringIndexOutOfBoundsException and NumberFormatException in
XMLTokener.unescapeEntity() when parsing malformed XML numeric
character references.

Issues:
- &#; (empty numeric reference) caused StringIndexOutOfBoundsException
- &#txx; (invalid decimal) caused NumberFormatException
- &#xGGG; (invalid hex) caused NumberFormatException

Changes:
- Add length validation before accessing character positions
- Add isValidHex() and isValidDecimal() helper methods
- Throw proper JSONException with descriptive messages

Fixes #1035, Fixes #1036
Extracted hex and decimal parsing logic into separate methods to
address SonarQube complexity warning:
- parseHexEntity(): handles ઼ format
- parseDecimalEntity(): handles { format

This reduces cyclomatic complexity while maintaining identical
functionality and all validation checks.
Added comprehensive test coverage for numeric character reference parsing:

Exception cases (should throw JSONException):
- Empty numeric entity: &#;
- Invalid decimal entity: &#txx;
- Empty hex entity: &#x;
- Invalid hex characters: &#xGGG;

Valid cases (should parse correctly):
- Decimal entity: A -> 'A'
- Lowercase hex entity: A -> 'A'
- Uppercase hex entity: A -> 'A'

These tests verify the fixes for issues #1035 and #1036.
Added comprehensive test coverage for safe type casting:

Exception cases (should throw JSONException, not ClassCastException):
- Malformed XML causing type mismatch in toJSONArray()
- Type mismatch in toJSONObject()

Valid cases (should continue to work):
- Valid XML to JSONArray conversion
- Valid XML to JSONObject conversion

These tests verify the fix for issue #1034 where ClassCastException
was thrown when parse() returned unexpected types.
Fix ClassCastException in JSONML.toJSONArray and toJSONObject
Fix input validation in XMLTokener.unescapeEntity()
Fixes the issue of losing the array if an empty forceList element or a tag is in the middle or the end
Added license clarification
Enhance README with license clarification
Ignore static fields in JSONObject.fromJson()
Validate XML numeric character references before string construction
pre-release-20260522 prep for next release
restore-lenient-jsonarray allow consecutive commas and insert null
…ow-serialization

Refactor CDL row serialization for readability
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.