我的缓存类

import 'dart:async';
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';

class CacheUtil{
  static set(String key, value) async{
    if(value is Map || value is List){
      value = json.encode(value);
    }
    SharedPreferences preferences = await SharedPreferences.getInstance();
    preferences.setString(key, json.encode(value));
  }
  static get(String key) async{
    SharedPreferences preferences = await SharedPreferences.getInstance();
    String data = preferences.getString(key);
    return data;
  }
}

在get方法中,我想看看值是否可以是json.decode 我该怎么办?

推荐答案

只要try 解码并捕获FormatException,就可以知道它何时失败:

void main() {
  var jsonString = '{"abc';
  var decodeSucceeded = false;
  try {
    var decodedJSON = json.decode(jsonString) as Map<String, dynamic>;
    decodeSucceeded = true;
  } on FormatException catch (e) {
    print('The provided string is not valid JSON');
  }
  print('Decoding succeeded: $decodeSucceeded');
}

Dart相关问答推荐

在异步方法中,有没有更优雅的方式在DART中等待!=NULL?

在Flutter中在 initstate() 之前调用了dependOnInheritedElement()

当 ng-repeat 嵌套在 AngularDart 中时访问外部 $index

在Flutter中通过 Function(T) 传递泛型类型

在 Flutter 中将 Widget 放在 ListView 之上

Flutter.io (dart) - 如何创建左填充覆盖?

Dart 1.8 中的异步/等待功能

Flutter中包导入和普通导入有什么区别?

Flutter - 单击时渲染新的小部件

如何在DartPad中导入库?

Flutter-在屏幕上绘制图形

Flutter插件和Flutter模块之间有什么区别?

从Dart中的另一个文件导入扩展名方法

Flutter /dart 错误:参数类型'Future'不能分配给参数类型'File'

如何使 FadeInImage 循环?

Dart/Flutter 中的=>(箭头)是什么意思?

何时使用polymer点击或点击?

Dart:并行处理传入的 HTTP 请求

pub 依赖和 dev_dependencies 有什么区别?

在 Dart 中获取集合/列表中数字总和的最简洁方法是什么?