Working with JSON in Dart is essential for building modern mobile or web applications using Flutter or Dart. JSON (JavaScript Object Notation) is a popular data format for exchanging information between servers and clients. In Dart, handling JSON is straightforward using built-in dart:convert
package which provides jsonEncode
and jsonDecode
functions.

This article will walk you through parsing JSON from a string, mapping JSON to a custom Dart class, and encoding a Dart object back into a JSON string.
1. Importing Required Library
import 'dart:convert';
2. Sample JSON Data
Here’s a simple JSON data string we want to decode:
{ "name": "John Doe", "email": "john@example.com", "age": 28 }
3. Dart Class to Map JSON
Create a model class that mirrors the structure of the JSON.
class User { final String name; final String email; final int age; User({required this.name, required this.email, required this.age}); factory User.fromJson(Map<String, dynamic> json) { return User( name: json['name'], email: json['email'], age: json['age'], ); } Map<String, dynamic> toJson() { return { 'name': name, 'email': email, 'age': age, }; } }
4. Parsing JSON to Dart Object
void main() { String jsonString = '{"name":"John Doe","email":"john@example.com","age":28}'; Map<String, dynamic> userMap = jsonDecode(jsonString); User user = User.fromJson(userMap); print('Name: ${user.name}'); print('Email: ${user.email}'); print('Age: ${user.age}'); }
5. Converting Dart Object to JSON String
void convertToJson() { User user = User(name: 'Jane Doe', email: 'jane@example.com', age: 25); String jsonString = jsonEncode(user.toJson()); print(jsonString); }
Working with JSON in Dart allows easy integration with REST APIs, data storage, and state management. For large or complex models, consider using the json_serializable package to generate model code automatically.
By understanding JSON parsing and encoding, Dart developers can confidently build data-driven applications with better structure and scalability.