【问题标题】:how to decode json from server in dart?如何在 dart 中从服务器解码 json?
【发布时间】:2021-12-04 06:39:24
【问题描述】:

我想解码状态码为 200 时从服务器返回的 json 并将它们初始化为一个变量,但我不知道该怎么做。

这是我对服务器的请求代码:

_SendInquiryReq({
    required BuildContext context,
  }) async {
    final prefs = await SharedPreferences.getInstance();
    var tok = prefs.getString('tok');

    var Num = NumberController.text;

    var headers = {
      'X-Requested-With': 'XMLHttpRequest',
      'Authorization': 'Bearer $tok',
      'Cookie':
          '.AspNetCore.Session = some thing'
    };

    var request = http.MultipartRequest(
        'GET', Uri.parse('my Link/$Num'));

    request.headers.addAll(headers);

    http.StreamedResponse response = await request.send();

    if (response.statusCode == 200) {
      print(await response.stream.bytesToString());
      print("Ok");
    } else {
      print(response.reasonPhrase);
    }
  }

【问题讨论】:

  • 响应如何
  • 它包含这样的东西:{ "id": "c137c733-2dd9-4ee5-9469-107388e5f4ab", }我想解码这个“id”

标签: android json flutter dart postman


【解决方案1】:

您需要创建一个将您的 JSON 映射到类实例的类,如下所示:

class IdModel {
  String id;

  IdModel({this.id});

  IdModel.fromJson(Map<String, dynamic> json) {
    id = json['id'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    return data;
  }
}

现在,每当您获得原始 JSON 响应时,只需使用这样的类:

IdModel model = IdModel.fromJson(yourJson);

使用model 获取ID!

【讨论】:

    【解决方案2】:
    • 首先,您必须使用await 等待响应完成接收
    • 继续使用jsonDecodejson.decode 方法解码成地图
    • 您可以访问您的数据,例如decodedMap['id']

    final headers = {'key': 'value'}; final request = http.MultipartRequest('POST', Uri.parse('uri')); request.headers.addAll(headers); final response = await request.send(); final reponseString = await response.stream.bytesToString(); final decodeMap = json.decode(reponseString);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      相关资源
      最近更新 更多