TL;DR
Get business pricing on monitors, keyboards and dev gear
- Business-only prices and quantity discounts
- Tax-exempt purchasing
- Multiple users, one account, clear invoices
Go 1.27 makes the new encoding/json/v2 and encoding/json/jsontext packages stable and generally available, following an experimental period and further refinement. The packages are designed to address behavioral, API and performance limitations in the longstanding encoding/json package; specific migration requirements and compatibility details are not given in the supplied report.
The Go team has made encoding/json/v2 and encoding/json/jsontext stable and generally available in Go 1.27, replacing an experimental API developed to address longstanding limitations in Go’s JSON support. The change gives Go developers new standard-library packages for handling JSON, including options intended to improve correctness, customization and performance.
The announcement, published on November 4, 2026, says the new packages follow an experimental period and further feedback and refinement. The authors describe jsontext as part of the new package offering, alongside the higher-level encoding/json/v2 API. The source introduces the packages as a response to issues identified through years of use of the original standard-library package.
The report identifies behavioral concerns in the existing encoding/json package. These include accepting invalid UTF-8 and duplicate JSON object member names, marshaling nil slices and maps as null, and resolving struct fields case-insensitively when decoding. The authors say some of these defaults can lead to ambiguous interpretations, interoperability problems or security risks. They cite past exploitation of duplicate-name ambiguity, including CVE-2017-12635; the article does not claim that the new packages alone prevent attacks.
The existing API also has restrictions around options, custom marshaling and streaming. For example, the report says options set on an encoder or decoder cannot be used through the package’s top-level marshal and unmarshal functions, and some options do not carry through custom unmarshal methods. It also says the old interfaces and buffering behavior can require extra allocations or repeated parsing. The announcement presents the new API as a redesign to address shortcomings that the authors consider difficult to fix without breaking existing behavior.
A New Path for Go JSON Handling
JSON is widely used for data exchange, and Go programs have had standard-library JSON support since before Go 1.0. A stable replacement API matters because JSON handling affects routine tasks such as reading requests, producing responses and exchanging data with other systems. Defaults around malformed input and ambiguous object names can affect whether different implementations interpret the same payload consistently.
The two packages also give Go developers a new place to use more flexible JSON operations. The report’s concerns about options, custom methods and buffering point to practical trade-offs in the older API, especially for applications that need stricter input handling or work with large values. The source does not provide benchmarks or quantify performance improvements, so the announcement supports a claim of redesigned capabilities, not a measured speed gain.
For maintainers, the availability of a stable API creates a choice rather than an automatic switch: existing programs can continue to use the established package, while new or updated code can evaluate the v2 packages. That distinction matters because the report says the old package’s behavior is difficult to change safely after years of use and reliance on its existing semantics.
Popular right now

Dyson V8 Cyclone Cordless Vacuum

De'Longhi La Specialista Arte Evo Espresso Machine with Grinder

Dyson Cyclone V10 Origin Cordless Vacuum
As an affiliate, we earn on qualifying purchases.
Why the Original API Was Reworked
Go’s original encoding/json package has been in the standard library since before Go 1.0. Its approach—mapping arbitrary Go types to default JSON representations while permitting custom representations—has served a broad range of applications. The Go authors say they first wrote about JSON support in Go more than 15 years before this announcement.
The team described an experimental JSON API the previous year. According to the November 2026 report, feedback and further refinement followed that experiment, leading to the stable release of encoding/json/v2 and encoding/json/jsontext in Go 1.27. The source argues that many problems in the original package arise from established API design choices. Changing those choices in place could break programs that depend on current behavior, making a separate API a way to offer different defaults without silently changing existing applications.
““After additional feedback and refinement, the new encoding/json/v2 and encoding/json/jsontext packages are stable and generally available in Go 1.27!””
— Michael Pratt, Joe Tsai, Daniel Martí, Johan Brandhorst-Satzkorn, Roger Peppe, Chris Hines and Damien Neil, Go blog authors
Migration and Compatibility Questions
The supplied announcement does not detail how existing applications should migrate, whether particular behavior changes can be configured, or how much work common code will require to adopt the new packages. It also gives no performance measurements or side-by-side benchmarks, so the practical impact on speed and memory use remains unquantified here.
The report describes intended improvements and concerns with the original package, but the material provided does not include a full account of the new packages’ APIs, option names or default behaviors. Developers should not assume that every issue listed has the same remedy or default setting in v2 without checking the package documentation. The announcement also does not say that the older encoding/json package has been removed or that existing Go programs must switch.
Adoption After Go 1.27
The immediate next step for Go developers is to review the documentation for encoding/json/v2 and encoding/json/jsontext and decide whether the new APIs fit their applications. Teams handling untrusted input may want to pay particular attention to how the packages treat invalid UTF-8, duplicate names and field matching, while developers with custom JSON methods or streaming needs can examine the relevant API details.
The announcement establishes general availability in Go 1.27, but does not set out a deprecation schedule for the older package or a required migration date. Broader adoption, implementation-specific compatibility findings and independent performance testing remain developments to watch.
Key Questions
What did Go announce?
Go announced that encoding/json/v2 and encoding/json/jsontext are stable and generally available in Go 1.27, after an experimental period and further refinement.
Does Go 1.27 remove the original encoding/json package?
No removal is stated in the supplied announcement. It presents the new packages as a separate API and says changing the established package’s behavior is difficult because applications may rely on it.
What problems is the new API intended to address?
The report points to issues including acceptance of invalid UTF-8 and duplicate object names, case-insensitive field matching, limited option handling, and constraints on streaming and performance.
Is the new API proven to be faster?
The announcement discusses performance limitations in the older API but provides no benchmark results in the supplied material. A measured speed improvement cannot be confirmed from this report alone.
Do existing Go applications need to migrate?
The announcement does not describe a mandatory migration or deadline. Developers can consult the new package documentation and assess compatibility and migration effort for their own code.
Source: go.dev
