我传递了以下对象:
var myVar = { typeA: { option1: "one", option2: "two" } }
我希望能够从上面的结构中提取密钥类型A.
此值可以每次更改,以便下次可以为typeB。
所以我想知道是否有办法做到这一点
答案 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}");
});