freezeJson function
逐层复制为不可修改的 JSON 值(SDK 交给 App 的数据不可修改,《3.接口设计》第 2 节)。 已经不可修改的映射(由本函数产生的)原样返回。
Implementation
Object? freezeJson(Object? value) {
if (value is UnmodifiableMapView<String, Object?>) return value;
if (value is Map) {
return UnmodifiableMapView<String, Object?>({for (final e in value.entries) e.key as String: freezeJson(e.value)});
}
if (value is UnmodifiableListView<Object?>) return value;
if (value is List) return UnmodifiableListView<Object?>([for (final item in value) freezeJson(item)]);
return value;
}