freezeJson function

Object? freezeJson(
  1. Object? value
)

逐层复制为不可修改的 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;
}