映射int值时,从JSON映射模型会给出错误

问题描述 投票:1回答:1

嗨我试图从JSOn获取值,但当我映射一个INT值,然后flutter显示错误,没有返回数据:

flutter: type 'String' is not a subtype of type 'int'

这是我的模特:

import 'package:http/http.dart' as http;
import 'dart:async';
import 'dart:convert';


class Kits {

  final String country;
  final String franchise;
  final String type;
   String brand;
   String procedure;
   String setdesc;
   int traymaterialid;
   String traydesc;
   int referencia;
   String descart;
   int cantidad;
   int homologado;
   int bajopresu;
   DateTime insdate;


   Kits(this.country,this.franchise,this.type, this.brand, this.procedure,this.traydesc, this.traymaterialid);

  factory Kits.fromJson(Map<String, dynamic>  json) {
         return Kits(json['COUNTRY'], json['FRANCHISE'], json['TYPE'], json['BRAND'], json['PROCEDURE'], json['TRAYDESCRIPTION'], json['TRAYMATERIALID'] /* <-- INT*/ );
  }

}

class KitsData {

  static const url = 'http://app-smith.com/en/[email protected]&macid=888&passwd=Wcz95f4UGkax5G';
  final JsonDecoder _decoder = new JsonDecoder();

    Future<List<Kits>> fetch(){    
  return http.get(url).then((http.Response response){
    final String jsonBody = response.body;
    //final statusCode = response.statusCode;

      /*if (statusCode < 200 || statusCode >= 300 || jsonBody == null){ 
        return List();
      }*/

      final kitsContainer = _decoder.convert(jsonBody);
      final List kitsItems = kitsContainer['kits'];

      return kitsItems.map( (kitsRaw) => new Kits.fromJson(kitsRaw) ).toList();

    });

  } 

}

class FetchDataException implements Exception {
  String _message;

  FetchDataException(this._message);

  String toString() {
    return "Exception: $_message";
  }
}

我不明白为什么会发生因为fromJson只获得了我传递密钥的值,然后在我的列表中我转换为String的值。

JSON的片段:

{"kits": [{"COUNTRY":"FR","FRANCHISE":"KNEE","TYPE":"LEGION","BRAND":"REVISION","PROCEDURE":"LEGION REVISION","SETDESCRIPTION":"LEGION REVISION - INSTRUMENTS","TRAYMATERIALID":"551820141LRC","TRAYDESCRIPTION":"INSTR LEGION REVISION","REFERENCIA":"71431722","DESCRIPCIONARTICULO":"LGN SCW LWDG TRL S3 5D X 10P","CANTIDAD":"1","HOMOLOGADO":"","BAJOPRESUPUESTO":"","INS_DATE":"2018-08-23 18:57:04"}
json dart flutter
1个回答
1
投票

所有数值都在引号内,因此它们不会作为int传输,而是作为String传输。错误消息是正确的。如果你想要它们作为String要么确保没有引用值,如果你不控制使用int.parse()将它们从String转换为int

© www.soinside.com 2019 - 2024. All rights reserved.