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');
}
  1. 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}raw
  2. data ← {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 textraw
  3. total ← 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}data
  4. print('total=$total');

    6  var total = data.values.cast<int>().reduce((a, b) => a + b);7  print('total=$total');8}
    outputtotal=60
    values 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.