Async and Practical
JSON Parse
Sum Values
jsonDecode from dart:convert parses JSON text into Dart maps and lists. Casting recovers concrete types.
Program
Play the program to parse a small JSON map and total its values.
json_parse.dart
Replay: real traced execution (multi-file project)
import 'dart:convert';
void main() {
var raw = '{"a": 10, "b": 20, "c": 30}';
var data = jsonDecode(raw) as Map<String, dynamic>;
var total = data.values.cast<int>().reduce((a, b) => a + b);
print('total=$total');
}
raw ← {"a": 10, "b": 20, "c": 30}
3void main() {4 var raw = '{"a": 10, "b": 20, "c": 30}';5 var data = jsonDecode(raw) as Map<String, dynamic>;values this step{"a": 10, "b": 20, "c": 30}rawdata ← {a: 10, b: 20, c: 30}
4var raw = '{"a": 10, "b": 20, "c": 30}';5var data = jsonDecode(raw) as Map<String, dynamic>;6var total = data.values.cast<int>().reduce((a, b) => a + b);values this step{a: 10, b: 20, c: 30}dataJSON textrawtotal ← 60
5var data = jsonDecode(raw) as Map<String, dynamic>;6var total = data.values.cast<int>().reduce((a, b) => a + b);7print('total=$total');values this step60total{a: 10, b: 20, c: 30}dataprint('total=$total');
6 var total = data.values.cast<int>().reduce((a, b) => a + b);7 print('total=$total');8}outputtotal=60values this step60total
dart:convert
`import 'dart:convert'` exposes `jsonDecode` and `jsonEncode`.
jsonDecode
Parses JSON text into `Map`, `List`, or scalar values.
cast and reduce
`values.cast<int>().reduce(...)` sums the integers.