简体   繁体   English

JSON:如何在 dart 中获取带有对象的 json 列表

[英]JSON: How can I get json list with object in dart

I have such a list returned from the server, I couldn't find how to create an object model for it?我从服务器返回了这样一个列表,我找不到如何为其创建对象模型? Can you help me?你能帮助我吗?

[ 
        {
            "id": 1,
            "reason": "Adres Sorunu Nedeniyle Alıcıya Ulaşılmadı"
        },
        {
            "id": 2,
            "reason": "Alıcı Adresinde Yok - Notlu Kargo"
        },
    ]

Here is a small example of how to make a model of this JSON structure:下面是一个如何制作这个 JSON 结构的模型的小例子:

import 'dart:convert';

class MyJsonObject {
  int id;
  String reason;

  MyJsonObject({
    required this.id,
    required this.reason,
  });

  factory MyJsonObject.fromJson(Map<String, dynamic> jsonMap) => MyJsonObject(
        id: jsonMap['id'] as int,
        reason: jsonMap['reason'] as String,
      );

  Map<String, Object> toJson() => {
        'id': id,
        'reason': reason,
      };

  @override
  String toString() => '{ID: $id, Reason: $reason}';
}

void main() {
  String jsonString = '''[
  {
    "id": 1,
    "reason": "Adres Sorunu Nedeniyle Alıcıya Ulaşılmadı"
  },
  {
    "id": 2,
    "reason": "Alıcı Adresinde Yok - Notlu Kargo"
  }
]
''';

  List<dynamic> jsonList = jsonDecode(jsonString) as List<dynamic>;

  List<MyJsonObject> myObjects = [
    for (final jsonMap in jsonList)
      MyJsonObject.fromJson(jsonMap as Map<String, dynamic>)
  ];

  myObjects.forEach(print);
  // {ID: 1, Reason: Adres Sorunu Nedeniyle Alıcıya Ulaşılmadı}
  // {ID: 2, Reason: Alıcı Adresinde Yok - Notlu Kargo}
}

I recommend reading the following if you need to handle more complicated data structures: https://docs.flutter.dev/development/data-and-backend/json如果您需要处理更复杂的数据结构,我建议您阅读以下内容: https ://docs.flutter.dev/development/data-and-backend/json

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM