【问题标题】:jsonEncode throwing exceptions encoding a simple classjsonEncode 抛出异常编码一个简单的类
【发布时间】:2022-09-30 06:33:44
【问题描述】:

朋友们

我有一个无法编码为 JSON 的简单 Dart 类。

以下代码的输出打印到控制台

flutter: Converting object to an encodable object failed: Instance of \'TestJsonConversion\'

class TestJsonConversion {
  String testString = \"123245abcde\";
  int testIneger = 1234;
}

void main() {
  var testJsonConversion = TestJsonConversion();
  try {
    var testString = jsonEncode(testJsonConversion);
    // ignore: avoid_print
    print(testString);
  }catch(e){
    // ignore: avoid_print
    print(e.toString());
  }
  runApp(const MyApp());
}

这是 Visual Studio 生成的默认应用程序,仅添加了这些行。

    标签: json flutter dart


    【解决方案1】:

    您不能使用内置的 jsonEncode 对用户类的实例进行编码。这些是您可以默认编码的内容:“数字、布尔值、字符串、空值、列表或带有字符串键的映射”。要对此类进行编码,您必须在其上定义一个 .toJson 方法,而我在那里没有看到。

    【讨论】:

    【解决方案2】:

    该类没有构造函数和 tojson 。尝试这个

    class TestJsonConversion {
      final String testString;
      final int testInteger;
    
     TestJsonConversion(this.testString, this.testInteger);
    
      TestJsonConversion.fromJson(Map<String, dynamic> json)
          : testString = json['trstString'],
            testInteger = json['testInteger'];
    
      Map<String, dynamic> toJson() => {
            'testString': testString,
            'testInteger': testInteger,
          };
    }
    

    当你创建一个实例时

    var testJsonConversion = TestJsonConversion(testString: 'abc', testInteger: 123);
    print(json.encode(testJsonConversion.toJson());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-18
      相关资源
      最近更新 更多