Line data Source code
1 : // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 2 : // for details. All rights reserved. Use of this source code is governed by a 3 : // BSD-style license that can be found in the LICENSE file. 4 : 5 : /// Throws an [ArgumentError] if [message] isn't recursively JSON-safe. 6 0 : void ensureJsonEncodable(Object? message) { 7 : if (message == null || 8 0 : message is String || 9 0 : message is num || 10 0 : message is bool) { 11 : // JSON-encodable, hooray! 12 0 : } else if (message is List) { 13 0 : for (var element in message) { 14 0 : ensureJsonEncodable(element); 15 : } 16 0 : } else if (message is Map) { 17 0 : message.forEach((key, value) { 18 0 : if (key is! String) { 19 0 : throw ArgumentError("$message can't be JSON-encoded."); 20 : } 21 : 22 0 : ensureJsonEncodable(value); 23 : }); 24 : } else { 25 0 : throw ArgumentError.value("$message can't be JSON-encoded."); 26 : } 27 : }