Magnus Mårtensson
Microsoft Regional Director, Azure MVP, CEO Loftysoft
Avirag Jain
Director & CTO R Systems
Mahesh Chand
Founder C# Corner, CEO Mindcracker
Chris Gali
CEO & Co-Founder Graphite
Subinder Khurana
Chief Architect StoryProcess, Founder NASSCOM DeepTech Club
Bryan Rishforth
Investor, Chairman Graphite
Bryn Everson
Director Biz Dev Graphite
Raj Tiwari
Digital Transformation Leader, Futurist and Visionary
Joseph Guadagno
Microsoft MVP, Lead Quicken Loans
Nikita Sachdev
Entrepreneur, Blockchain Enthusiast & Advisor, Social Media Influencer
Doug Wagner
COO & Founder Adapt Technical Group
Ritesh Modi
Architect, Senior Evangelist, Cloud Architect
Crystal Wenrick
Director Communications Mindcracker
Allen O’Neill
Microsoft MVP, Consulting Engineer/Architect
Praveen Kumar
CEO MCN Solutions
Chris Love
Founder Love2Dev, Microsoft MVP, Author
Sanjay Vyas
Microsoft Regional Director, Microsoft MVP, Founder & CEO SkillLabs Technologies
Veena Sarda
Deep Learning Consultant, Author
Sekhar Srinivasan
C# Corner MVP, Microsoft Certified Trainer, Pluralsight Author
Lalit Bansal
Founder & CEO - EIY SYS
Navdeep Garg
CEO Revinfotech
Prakash Tripathi
Tech Manager/Leader, Microsoft MVP, Blogger
Bhavna Jain
Breakthrough Consultant
Naveen Sharma
Enterprise Architect, Leadership Coach, Author
Vidya Vrat Agarwal
Principal Architect, Microsoft MVP, Author
Sheetal Agarwal
Founder Clownselors, Medical Clown, Trainer
Abhishek Kant
Founder GTM Catalyst
Vishnu Saran
Founder & CEO VoiceQube
Sandeep Soni
Founder & CEO Deccansoft, Microsoft Certified Trainer
Parveen Malik
AVP InfoSec & Vulnerability Management, Information Security Expert
Nitin Pandit
Microsoft MVP, Developer Evangelist, Author
Niloshima Srivastava
C# Corner MVP, Tech Architect, Trainer, Blogger
Bala Chirtsabesan
Senior Software Engineer at Microsoft, Author
Manoj Mittal
Sr. Technical Architect, C# Corner MVP, Author
Chandni Di
Co-Founder Voice of Slum
Vithal Wadje
Technical Lead, Microsoft MVP, Author
Shivam Ahuja
Founder SkillCircle, Business Mentor
Chervine Bhiwoo
Solution Architect, Microsoft MVP, Author
Saurabh Jain
Vice President Paytm, Founder Fun2Do Labs, Author
Vinay Solanki
Head IoT at Lenovo, Founder IoT-NCR
Anshu kumari
Founder Blockchainkids, Inventor, Trainer
Amit Singal
CEO Startup Buddy
Dev Pratap
Co-Founder & CEO Voice of Slum
Amey Vartak
Technology Consultant, Full Stack Developer, C# Corner MVP, Author
Viswanatha Swamy
Principal Software Engineer, C# Corner MVP, Author
Sanket Verma
Research Engineer @ Ballistics (Forensics) and Chair, PyData Delhi
Sourabh Somani
Lead Developer, Microsoft MVP, Author
Abhishek Mishra
Software Architect, C# Corner MVP, Author
Siddharth Vaghasia
Technical Consultant, C# Corner MVP, Blogger
Bassam Alugili
Senior Software Specialist, Database Expert
S Ravi Kumar
Solution Architect, C# Corner MVP, Author
Sundaram Subramanian
Full Stack Developer, C# Corner MVP, Speaker
Deepesh Somani
Solution Architect, Microsoft MVP, Author
Debasis Saha
Technical Project Manager, C# Corner MVP, Blogger, Author
Vipul Jain
Software Architect, C# Corner MVP, Author
Akshay Patel
Technical Architect, Microsoft Certified Trainer, C# Corner MVP, Author
Stephen Simon
RPA Developer, Evangelist, Author
Vivek Sharma
Founder Kingster636, AR/VR Specialist
Jeetendra Gund
Technical Lead, C# Corner MVP, Author
Sujal Beniwal
AI Enthusiast, Student
M Viknaraj
Microsoft MVP, Azure Architect, Author
Prasham Sabadra
Software Architect, C# Corner MVP, Trainer, Author
Aakash Maurya
Senior Developer, C# Corner MVP, Speaker
Ankit Sharma
Senior Software Engineer, C# Corner MVP, Author
Mangesh Gaherwar
Team Lead, C# Corner MVP, Author
Viral Jain
Technical Consultant, C# Corner MVP, Author
Bhasker Das
Solution Architect, Evangelist
Manish Dwivedi
Associate Project Manager
Ck Nitin
Programmer, Author
Rohit Gupta
Technical Trainer, Author
Manish Tewatia
Full-stack Marketer, UX Designer
Bhavya Gaur
Technical Illustrator
Rohit Tomar
SEO/SMO Expert
Web Track
Cloud & Data Track
Dev Track
Registration & Breakfast
Future of Desktop Apps with JS (ElectronJs)
Nitin Pandit
Building Serverless Microservices Using Microsoft Azure
Vithal Wadje
Innovating RPA: A Robot for Every Person
Stephen Simon
Managing Cloud Storage Accounts using Logic Apps
Viknaraj Manogararajah
Data visualization using Python
Sekhar Srinivasan
Going Cross platform with AR Foundation
Vivek Sharma
Keynote
Managing your Azure dependencies in ASP.NET Core apps using VS
Bala Chirtsabesan
Securing Applications on Intelligent Azure
Abhishek Mishra
Getting started with Blazor the Framework of Future
S Ravi Kumar
Lunch
Build Progressive Web Apps using Angular 9
Debasis Saha
Build and deploy to any platform using Azure DevOps
Chervine Bhiwoo
Deep Dive in Azure Service Bus
Akshay Patel
Build a Native Mobile Application using React Native and JavaScript
Joseph Guadagno
Making sense of Web Job, Web Job SDK and Functions in Azure
Prakash Tripathi
CloudFront Distribution in AWS
Viral Jain
Tea Break
Introduction to PowerBI
Aakash Maurya
Build Advanced SPFx solutions with React and Graph API
Siddharth Vaghasia
Build Business Intelligence Analyst (BIA) Skills
Sundaram Subramanian
Deep dive of Power Platform – AI BUILDER
Prasham Sabadra
Panel 1
What's new in SharePoint development
Vipul Jain
Build a SSO (Single Sign On) based Native JavaScript application with Microsoft Identity within 10 minutes
Manoj Mittal
Panel 2
Applications and working of AI
Veena Sarda
Deploying serverless API's with .Net core 3.0 on AWS & Azure
Amey Vartak
Panel 3
Blockchain with .NET Core (Ark)
Anshu Kumari
Closing Note & Prize Distribution
Dev Track
Cloud Track
Architecture Track
Emerging Tech Track
Registration & Breakfast
Creating Full-Stack Web Apps Using Server-Side Blazor
Ankit Sharma
Real time face recognition with MS Cognitive Services
Niloshima Srivastava
Building Scalable APIs with GraphQL
Jeetendra Gund
Future of development with AI and Blockchain
Navdeep Garg
Debugging Tips and Tricks with Visual Studio 2019
Joseph Guadagno
Azure Containers
Abhishek Kant
Enterprise Architecture
Naveen Sharma
Bot Framework - learn it fast and look like a boss!
Allen O’Neill
Keynote
.Net Core & C# 8 Performance
David McCarter
Working with Azure kubernetes services
Ritesh Modi
Becoming an Architect
Vidyavrat Agarwal
Why Techies Need to Learn Product Management
Saurabh Jain
Lunch
Build a rules engine in .Net Core
Sanjay Vyas
Building CI and CD Pipeline using Azure DevOps
Sandeep Soni
Entity Framework Core - Tips and Tricks, Performance Optimization, and Tuning
Bassam Alugili
Hacking your way into Data Science
Sanket Verma
Speed up your .Net Core Website
Sourabh Somani
Azure
Magnus Mårtensson
Demystifying Open Distro for Elasticsearch
Suman Debnath
Future of Data
Shivam Ahuja
Tea Break
gRPC with C# and .Net Core
Mangesh Gaherwar
Panel 1
Essentials of Cloud security
Parveen Malik
Power platform and Dynamics 365
Deepesh Somani
Microservices - the gRPC Way
Viswanatha Swamy
Panel 2
Reserved
Reserved
Closing Note & Prize Distribution
Choosing the Right JSON Serializer for Modern .NET
JSON serialization sits on the critical path of many .NET applications. APIs convert objects into response bodies, message brokers carry JSON events, and background services repeatedly parse configuration or telemetry documents. The serializer therefore affects more than raw speed: it also influences memory use, compatibility, security, and the amount of code required to handle real-world data.
The two most familiar choices are System.Text.Json, included with modern .NET, and Newtonsoft.Json, often called Json.NET. Both can serialize and deserialize common C# models reliably, but their internal designs and feature sets differ. A useful comparison must examine throughput, allocations, startup behavior, customization, and the shape of the data being processed.
This topic is especially relevant to developers working across cloud services, web platforms, data systems, and DevOps pipelines. A serializer that performs well for small HTTP responses may behave differently when processing large documents or sustained event streams. The right decision comes from measuring the workload rather than relying on a universal winner.
How The Two Libraries Approach JSON
System.Text.Json was designed as a modern, high-performance JSON framework for .NET. It uses UTF-8 internally, integrates closely with the runtime, and supports APIs that can read from and write to spans, streams, pipes, and buffers. Recent .NET releases have expanded its support for custom converters, polymorphism, required members, contract customization, and JSON documents.
Its default behavior favors predictable, standards-oriented processing. It is generally strict about malformed JSON and has clear options for naming policies, ignored properties, number handling, comments, and trailing commas. Source generation can reduce reflection costs by producing serialization metadata at build time, which is particularly useful for trimmed, native, mobile, or serverless applications.
Newtonsoft.Json is a mature and highly extensible library with a broad ecosystem. It supports flexible contract resolution, LINQ to JSON, dynamic data, custom binders, legacy conventions, and many compatibility switches accumulated over years of production use. Applications that need unusual property rules or must preserve behavior from older .NET Framework systems often find its flexibility valuable.
The difference is therefore architectural as well as numerical. System.Text.Json emphasizes runtime efficiency and platform integration, while Newtonsoft.Json emphasizes compatibility and customization. Neither characteristic automatically makes one library suitable for every application.
Where System.Text.Json Usually Leads
For ordinary object graphs, System.Text.Json commonly delivers higher throughput and fewer allocations on current .NET versions. Its use of UTF-8 and optimized runtime paths can reduce the work involved in converting between strings, bytes, and model properties. This advantage is most visible in high-volume APIs, message consumers, and services that repeatedly process similar DTOs.
Source-generated serialization can improve the result further. Instead of discovering type metadata through reflection at runtime, the application can generate a serialization context during compilation. That reduces startup overhead and can make behavior more predictable in environments where reflection access is restricted. The benefit is strongest for stable models that are known during development.
The library is also a natural fit for ASP.NET Core. Framework integrations, formatters, and configuration patterns are readily available, and the default serializer has improved with each .NET release. Teams that begin a new application on current .NET often avoid an additional dependency while receiving strong baseline performance.
However, the word “faster” needs context. A benchmark using tiny flat objects may show a dramatic difference that becomes less important when network latency, database access, compression, or business logic dominates the request. Conversely, a service processing millions of messages per minute may gain substantially from even modest reductions in CPU time and garbage collection pressure.
Why Newtonsoft.Json Remains Important
Newtonsoft.Json continues to be a practical choice when an application depends on advanced JSON behavior. Its support for flexible contract resolvers, custom naming rules, extension data, reference handling, and dynamic JSON manipulation can shorten implementation time. It is also familiar to many .NET developers, which reduces training and migration costs.
LINQ to JSON is a major distinction. JObject, JArray, and related APIs allow developers to inspect or modify documents without defining a complete set of C# classes. System.Text.Json provides JsonDocument and JsonNode for similar scenarios, but existing code may rely heavily on Newtonsoft.Json’s query and mutation model.
Compatibility is another strong reason to retain Json.NET. Older systems may depend on subtle behaviors involving null values, dates, type names, missing members, or polymorphic objects. Replacing the serializer can change wire output or deserialization results even when the C# models remain unchanged. Such changes can break clients, persisted documents, signatures, or integration tests.
Newtonsoft.Json is not automatically slow. For many workloads, its performance is entirely adequate, and careful settings can prevent unnecessary overhead. It may be the economical choice when the difficult part of a project is representing irregular or legacy JSON rather than maximizing requests per second.
Benchmarking Throughput And Memory
A useful benchmark should measure both serialization and deserialization. Serialization converts objects into UTF-8 bytes or strings, while deserialization reconstructs objects from input. The two operations can have different bottlenecks, especially when converters, nested collections, or polymorphic models are involved.
The test should include representative payloads: small API DTOs, medium nested objects, large arrays, optional properties, dates, dictionaries, and any unusual numeric or textual values used in production. Warm-up iterations should separate JIT compilation from steady-state execution, and several target frameworks should be tested if the application may move between .NET versions.
BenchmarkDotNet is a strong choice for this work because it reports operations per second, elapsed time, allocated bytes, and other runtime statistics. Tests should keep serializer options equivalent wherever possible. A naming policy, indentation, case-insensitive matching, or reference preservation setting can change results substantially.
| Area | System.Text.Json | Newtonsoft.Json | Practical Meaning |
|---|---|---|---|
| Typical throughput | Often higher for standard models | Usually adequate, sometimes lower | System.Text.Json can reduce CPU use in hot paths |
| Allocations | Often lower, especially with UTF-8 APIs | Can allocate more intermediate objects | Lower allocation may reduce garbage collection |
| Startup and trimming | Strong with source generation | More reflection-oriented | System.Text.Json suits serverless and trimmed apps |
| Dynamic JSON | JsonDocument and JsonNode available | JObject and JArray are mature | Newtonsoft may be easier for highly irregular documents |
| Custom contracts | Improving through converters and contract APIs | Very broad and established | Json.NET remains attractive for unusual rules |
| Legacy compatibility | May require behavior changes | Strong for existing Json.NET applications | Migration needs wire-format testing |
| ASP.NET Core integration | Built in by default | Supported through configuration | The platform default minimizes setup |
Memory results deserve as much attention as throughput. A serializer that completes quickly but allocates heavily can trigger more frequent garbage collections under sustained load. Large payloads may also expose the cost of materializing strings or DOM nodes. When possible, benchmark byte-oriented APIs and streaming approaches instead of measuring only convenience methods that create intermediate strings.
For cloud systems, these measurements connect directly to operating cost. A service that uses fewer CPU cycles may need fewer instances, while lower allocation rates can stabilize latency during traffic spikes. In a distributed event-processing system, efficient parsing can be particularly important; experience from real-time pipeline design shows why serialization choices should be evaluated as part of the entire data path rather than in isolation.
Feature Differences That Affect Migration
The most visible migration issues involve naming and null handling. System.Text.Json uses case-sensitive property matching by default during deserialization, although case-insensitive matching can be enabled. Naming policies also need to be configured explicitly. Newtonsoft.Json applications may have accumulated attributes or global settings that produce different casing, default values, or date representations.
Custom converters require careful review. Both libraries support converters, but their APIs and supported scenarios differ. A converter written for Json.NET cannot simply be transferred to System.Text.Json. It may need to account for Utf8JsonReader and Utf8JsonWriter, which can improve efficiency but require a different programming style.
Polymorphism deserves dedicated tests. Systems that serialize base classes, interfaces, or heterogeneous collections may depend on type discriminators or legacy type metadata. System.Text.Json has added explicit polymorphism features, but secure and predictable configuration is essential. Blindly accepting runtime type names from untrusted JSON is dangerous in any serializer.
The same caution applies to reference loops and object identity. Newtonsoft.Json offers established settings for preserving references and handling loops, while System.Text.Json has its own reference-handling options. These settings can alter the wire format, so a migration should compare actual payloads rather than only checking whether objects round-trip in isolated unit tests.
Security And Operational Considerations
A JSON library is part of an application’s input boundary. Deserialization should use narrow, intentional models whenever possible, and untrusted data should not be allowed to select arbitrary runtime types. Type metadata, permissive converters, excessive depth, and very large payloads can create security or availability risks.
Resource limits matter in production. Configure request size limits, cancellation behavior, maximum depth where appropriate, and streaming patterns for large documents. A fast serializer cannot compensate for an endpoint that accepts unlimited nested input or builds a full in-memory representation when only a few fields are needed.
Dependency maintenance is another factor. System.Text.Json is serviced with the .NET platform, while Newtonsoft.Json is maintained as a separate package with its own release lifecycle. Both should be kept current and monitored for advisories. The best operational choice is the library that the team can configure, patch, observe, and test consistently.
Teams should also record serialization settings as part of an API contract. Changes to ignored properties, enum formatting, date handling, or naming conventions can be breaking changes even when no method signature changes. Logging representative payload metadata, latency, allocation behavior, and error rates helps identify whether serialization is actually a production bottleneck.
Making A Practical Selection
For a new ASP.NET Core service using conventional DTOs, System.Text.Json is usually the sensible starting point. It offers strong default performance, first-party integration, source-generation options, and a smaller dependency footprint. It is particularly compelling for high-throughput endpoints, cloud-native workers, and services that need predictable startup behavior.
Newtonsoft.Json is a better fit when the application depends on its mature dynamic document model, complex contract customization, or established wire-format behavior. Keeping it can be safer than forcing a migration that introduces subtle compatibility failures. A library should earn replacement through measurable benefits, not fashion.
A mixed strategy can also work. The application may use System.Text.Json for HTTP APIs and high-volume messages while retaining Newtonsoft.Json for a specialized legacy integration. This approach requires clear boundaries and consistent documentation, because developers must know which attributes, converters, and settings apply to each path.
Use the following decision rules when evaluating a real project:
- Choose System.Text.Json for new standard model-based services on current .NET.
- Enable source generation when models are stable and startup, trimming, or allocation behavior matters.
- Retain Newtonsoft.Json when dynamic JSON, legacy contracts, or advanced customization drives the design.
- Benchmark representative payloads with both libraries before changing a high-volume production path.
- Add compatibility tests for naming, nulls, dates, enums, polymorphism, and reference handling during migration.
A controlled migration can begin with one endpoint or message type. Capture existing JSON fixtures, compare serialized output, replay real deserialization cases, and monitor latency and allocation changes in a staging environment. This creates evidence about the application’s actual behavior instead of assuming that a library-wide benchmark predicts every result.
The choice between these serializers is ultimately a design decision about performance, compatibility, and maintainability. Start with the platform default when it meets the contract, preserve Newtonsoft.Json where its capabilities protect working integrations, and let measured workload data settle the trade-off. Review the relevant conference sessions and technical material, then apply the benchmark approach to a representative .NET service before committing to a broad change.
1, CBD, Maharaj Surajmal Road, Near Yamuna Sports Complex, Delhi, 110032
GENERAL QUERIES
Manish Tewatia
manish@csharpcon.com
+91-9718-431-042
TICKET QUERIES
Atul Gupta
conference@csharpcon.com
+91-9910-125-804