Flutter获取对象属性名称

时间:2018-04-17 04:33:18

标签: json object dart flutter

我传递了以下对象:

var myVar = { typeA: { option1: "one", option2: "two" } }

我希望能够从上面的结构中提取密钥类型A.

此值可以每次更改,以便下次可以为typeB。

所以我想知道是否有办法做到这一点

3 个答案:

答案 0 :(得分:4)

我能够使用'键'来解决

对于像这样的json示例:

{
"1-0001": {
  "name": "red",
  "hex": "FF0000"
 },
"1-0002": {
  "name": "blue",
  "hex": "0000FF"
 },
"1-0003": {
  "name": "green",
  "hex": "008000"
 }
}

我能够使用

Map<String, dynamic> decoded = json.decode(jsonString);
for (var colour in decoded.keys) {
  print(colour);                   // prints 1-0001
  print(decoded[colour]['name']);  // prints red
  print(decoded[colour]['hex']);   // prints FF0000
}

答案 1 :(得分:2)

要获取您可以使用的所有文件名:

var data = ...

var filenames = [];
for(var i = 0; i < data.length; i++) {
  var item = data[0]['files];
  var key = item.keys.first;
  var filename = item[key]['filename'];
  filenames.add(filename);
}

print(filenames);

答案 2 :(得分:0)

您需要定义数据类型。 它基本上是(键值对)的映射,其中键的更改如问题类型A或类型B中所述 这个对象有2个属性option1和option2,它也是字符串。

以下是构建模型以及如何使用它的示例代码

import 'package:TestDart/TestDart.dart' as TestDart;

main(List<String> arguments) {
  var  map = new Map<String, MyObject>();
  map['typeA'] = new MyObject("one", "two");
  map['typeB'] = new MyObject("one", "two");

  print(map['typeA'].toString());
  print(map['typeA'].toString());
}

class MyObject {
  String _option1;
  String _option2;

  MyObject(this._option1, this._option2);

  String get option2 => _option2;

  String get option1 => _option1;

  @override
  String toString() {
    return 'MyObject{option1: $_option1, option2: $_option2}';
  }


}

相关答案

 map.forEach((key, value) {
    print("Key : ${key} value ${value}");
  });