【问题标题】:List<Object> conversion from netcore server api in Flutter DartFlutter Dart 中从 netcore 服务器 api 的 List<Object> 转换
【发布时间】:2019-10-23 09:57:24
【问题描述】:

我正在尝试将对象列表(Flutter 中的List&lt;Object&gt;)转换为 Flutter 项目中定义的类型(类)。我已经尝试过转换列表的示例,如 Serializing Your Object in Flutter 所示。每次我得到Map&lt;String, dynamic&gt; 都不是List&lt;dynamic&gt; 的子类型。但是尝试了一些不同的,同样的错误。发布的是后者的示例代码,而不是来自Serializing Your Object in Flutter。有没有其他方法可以实现这一目标?非常感谢您的回复。 [更新]

自定义对象

@JsonSerializable(explicitToJson: true)
class Activity{
  String id;
  String name;
  double amount;

  Activity({ this.amount, this.name , this.id});  

  Activity.fromJson(Map<String, dynamic> json){ 
      id = json["id"];
      name = json["name"];
      amount = json["amount"];
  }
  Map<String, dynamic> toJson() => {      
      'id' : id,
      'name' : name,
      'amount' : amount,
  };
}

颤振屏幕示例

initiateConnection(){
    var builder = HubConnectionBuilder();
    this._hubConnection = builder.withUrl("##########################").build();

    _hubConnection.onclose( (error) => print("Connection Closed"));

    this._hubConnection.on("Activities", formActivityDashboard );

    this._hubConnection.start().then((data) => print("Connected"));
  }

  formActivityDashboard(List<Object> data){
    final items = (data).map((i) => new Activity.fromJson(i));
    for (final item in items) {
      print(item.id);
    }
  }

【问题讨论】:

  • 你能发布你的代码吗?
  • @JulienLachal 。好的一分钟。

标签: flutter dart


【解决方案1】:
List<dynamic>ActivityList=json.decode(response.body);
List<Activity> myActivityList = new List();

      for(int i=0;i<ActivityList.length;i++)
      {
        Map<String, dynamic>ActivityData = ActivityList.elementAt(i);
        Activity act=new Activity();
        act.id=ActivityData['id']
        act.name=ActivityData['name']
        act.amount=ActivityData['amount']

        myActivityList.add(act);
      }

【讨论】:

  • 谢谢你试试 Mahmoud
  • 相同的结果@Mahmoud
  • @D_Edet 错误很明显,响应数据是 List 并且您尝试将其放入 Map 我认为您的响应是列表列表而不是对象列表这就是为什么您得到这个错误
  • 我确信服务器会返回一个对象列表。 Angular 客户端应用程序与 List 配合良好,列表转换为 Angular 应用程序中定义的列表类型。列表转换是 Flutter 中的挑战。服务器实际上发送的是对象列表,而不是字符串。
  • 对于现在的回复,我深表歉意。是的,我应该向您展示我的回复正文。刚注意到,我错了。服务器正在返回列表列表而不是对象列表。我不知道为什么。我将继续使用第一个列表进行迭代。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 2020-08-18
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
  • 2022-09-30
  • 2019-12-06
  • 2019-12-11
相关资源
最近更新 更多