Skip to content

Add encoder option to write infinity and NaN as null#18

Merged
mattt merged 1 commit into
mainfrom
mattt/non-conforming-float
Feb 6, 2026
Merged

Add encoder option to write infinity and NaN as null#18
mattt merged 1 commit into
mainfrom
mattt/non-conforming-float

Conversation

@mattt
Copy link
Copy Markdown
Owner

@mattt mattt commented Feb 6, 2026

No description provided.

@mattt mattt requested a review from Copilot February 6, 2026 12:01
@mattt mattt changed the title Add encoding / serialization option to write infinity and NaN as null Add encoder option to write infinity and NaN as null Feb 6, 2026
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds support for handling infinity and NaN values during JSON serialization by introducing two new writing options. The implementation leverages existing flags in the underlying yyjson C library and extends both the YYJSONSerialization and YYJSONEncoder APIs to support these options.

Changes:

  • Added .allowInfAndNaN option to write infinity/NaN as literals (non-standard JSON)
  • Added .infAndNaNAsNull option to write infinity/NaN as null, with precedence over .allowInfAndNaN
  • Updated validation logic to conditionally allow non-finite numbers based on options

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.

Show a summary per file
File Description
Tests/YYJSONTests/SerializationTests.swift Added comprehensive tests for YYJSONSerialization with new options, including precedence testing
Tests/YYJSONTests/ConfigurationTests.swift Added tests for YYJSONEncoder with new options, covering both infinity and NaN cases
Sources/YYJSON/Serialization.swift Implemented option handling in WritingOptions, validation logic, and value conversion
Sources/YYJSON/Encoder.swift Added numberValue helper and threaded writeOptions through all encoding containers
Sources/YYJSON/Configuration.swift Updated YYJSONWriteOptions documentation with improved clarity and precedence notes
README.md Updated documentation in two sections to document the new non-standard options

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@mattt mattt merged commit 6514373 into main Feb 6, 2026
23 checks passed
@mattt mattt deleted the mattt/non-conforming-float branch February 6, 2026 12:13
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.

2 participants