Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 为同一个键解析具有不同值类型的json_Flutter_Dart - Fatal编程技术网

Flutter 为同一个键解析具有不同值类型的json

Flutter 为同一个键解析具有不同值类型的json,flutter,dart,Flutter,Dart,我知道可以解析json字符串,然后检查值是否为特定类型。我想知道在弗利特是否有这样的惯例 例如: "{"id":1,"some_key":100}" 也可能是 "{"id":1,"some_key":"GOOD"}" 现在我的目标是: class someClass { int id, int some_key } 我必须将some键更改为String类型,然后在解析检查中,如果类型不是String,则必须将some_键转换为String?或者有什么方法可以做到这一点?只需

我知道可以解析json字符串,然后检查值是否为特定类型。我想知道在弗利特是否有这样的惯例

例如:

"{"id":1,"some_key":100}"
也可能是

"{"id":1,"some_key":"GOOD"}"
现在我的目标是:

class someClass {
    int id,
    int some_key
}

我必须将some键更改为String类型,然后在解析检查中,如果类型不是String,则必须将some_键转换为String?或者有什么方法可以做到这一点?

只需在类中使该变量动态,以便解析您接收到的任何数据以及何时使用它。您可以使用

someKey.runtimeType 
检查类型并以任何方式使用。 你的班级看起来像这样

class SomeClass {
  int id;
  dynamic someKey;

  SomeClass({this.id, this.someKey});

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

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['some_key'] = this.someKey;
    return data;
  }
}
class-SomeClass{
int-id;
动态someKey;
SomeClass({this.id,this.someKey});
fromJson(映射json){
id=json['id'];
someKey=json['some_key'];
}
映射到JSON(){
最终地图数据=新地图();
数据['id']=this.id;
数据['some_key']=this.someKey;
返回数据;
}
}
在你想要解析数据的地方,使用这个

SomeClass someclass = SomeClass.fromJson(jsonDecode(<YOUR JSON STRING HERE>));
SomeClass-SomeClass=SomeClass.fromJson(jsonDecode());

只需在类中使该变量动态,以便解析您接收到的任何数据以及何时使用它。您可以使用

someKey.runtimeType 
检查类型并以任何方式使用。 你的班级看起来像这样

class SomeClass {
  int id;
  dynamic someKey;

  SomeClass({this.id, this.someKey});

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

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['some_key'] = this.someKey;
    return data;
  }
}
class-SomeClass{
int-id;
动态someKey;
SomeClass({this.id,this.someKey});
fromJson(映射json){
id=json['id'];
someKey=json['some_key'];
}
映射到JSON(){
最终地图数据=新地图();
数据['id']=this.id;
数据['some_key']=this.someKey;
返回数据;
}
}
在你想要解析数据的地方,使用这个

SomeClass someclass = SomeClass.fromJson(jsonDecode(<YOUR JSON STRING HERE>));
SomeClass-SomeClass=SomeClass.fromJson(jsonDecode());