代码之家  ›  专栏  ›  技术社区  ›  Jossef Harush Kadouri

json解码后无法将值赋给my`map<string,string>`变量

  •  0
  • Jossef Harush Kadouri  · 技术社区  · 7 年前

    我试图给我的 Map<String, String> 变量,在JSON编码后再进行JSON解码。下面的代码示例是一个简化的复制;

    import 'dart:convert';
    
    String toJson(dynamic object) {
      var encoder = new JsonEncoder.withIndent("     ");
      return encoder.convert(object);
    }
    
    dynamic fromJson(String jsonString) {
      return json.decode(jsonString);
    }
    
    void main() {
      Map<String, String> data = {"hello": "world"};
      String jsonString = toJson(data);
      data = fromJson(jsonString);
      print(data);
    }
    

    当我运行它时,它失败了;

    Unhandled exception:
    type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Map<String, String>'
    

    on this online editor 它以不同的错误失败;

    Uncaught exception:
    TypeError: Instance of '_JsonMap': type '_JsonMap' is not a subtype of type 'Map<String, String>'
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Jossef Harush Kadouri    7 年前

    解决它,

    我不喜欢,但它能解决这个问题。将 fromJson 功能 Map<String, String>.from(...)

    例如:

    void main() {
      Map<String, String> data = {"hello": "world"};
      String jsonString = toJson(data);
      data = Map<String, String>.from(fromJson(jsonString));
      print(data);
    }