How to convert Map to string and string to Map ?
Answer
Overview
Converting between
text
Maptext
Stringtext
dart:converttext
jsonEncodetext
jsonDecodetext
toString()Map to String
Method 1: jsonEncode (JSON format — Recommended)
dartimport 'dart:convert'; final map = {'name': 'Alice', 'age': 28, 'active': true}; // Map → JSON String final jsonString = jsonEncode(map); print(jsonString); // {"name":"Alice","age":28,"active":true} print(jsonString.runtimeType); // String
Method 2: toString() (Dart debug format)
dartfinal map = {'name': 'Alice', 'age': 28}; final str = map.toString(); print(str); // {name: Alice, age: 28} ← Dart format (NOT valid JSON)
Method 3: Custom Serialization
dartfinal map = {'key1': 'val1', 'key2': 'val2'}; // Build custom string String result = map.entries .map((e) => '${e.key}=${e.value}') .join('&'); print(result); // key1=val1&key2=val2 (query string format)
String to Map
Method 1: jsonDecode (JSON String → Map)
dartimport 'dart:convert'; final jsonStr = '{"name":"Alice","age":28,"active":true}'; // JSON String → Map<String, dynamic> final Map<String, dynamic> map = jsonDecode(jsonStr); print(map['name']); // Alice print(map['age']); // 28 print(map['active']); // true
Method 2: Parse Custom String Format
dart// Query string format: "key1=val1&key2=val2" String queryString = 'name=Alice&age=28&city=Chennai'; final map = Map.fromEntries( queryString.split('&').map((kv) { final parts = kv.split('='); return MapEntry(parts[0], parts[1]); }), ); print(map); // {name: Alice, age: 28, city: Chennai}
With Nested Maps
dart// Nested Map → JSON String final nested = { 'user': {'name': 'Bob', 'scores': [100, 95, 88]}, 'active': true }; final json = jsonEncode(nested); // {"user":{"name":"Bob","scores":[100,95,88]},"active":true} // JSON String → Nested Map final decoded = jsonDecode(json) as Map<String, dynamic>; final user = decoded['user'] as Map<String, dynamic>; print(user['name']); // Bob
With Custom Model Classes
dartclass User { final String name; final int age; User({required this.name, required this.age}); // Model → Map Map<String, dynamic> toJson() => {'name': name, 'age': age}; // Map → Model factory User.fromJson(Map<String, dynamic> json) => User(name: json['name'], age: json['age']); } // Usage final user = User(name: 'Alice', age: 28); final mapStr = jsonEncode(user.toJson()); // Model → String final restored = User.fromJson(jsonDecode(mapStr)); // String → Model
Quick Reference
| Direction | Method | Output |
|---|---|---|
| Map → String | text | text |
| String → Map | text | text |
| Map → Debug string | text | text |
Use
/textjsonEncodewhen working with APIs. UsetextjsonDecodeonly for debugging — its output is not valid JSON.texttoString()