我在 dart 中有以下代码,它将字符串解码为 JSON 对象。
import 'dart:convert';
void main(){
var stringValue = "{\"last_supported\": \"2.00\", \"current\": \"2.00\"}";
var newValue = json.decode(stringValue);
print(newValue["last_supported"]);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,但是当我将 print 语句更改为:
print(newValue.last_supported);
它给了我以下异常:
Uncaught TypeError: C.C_JsonCodec.decode$1(...).get$last_supported is not a function
是否可以使用点注释来访问属性,以及如何使用?
我猜你有java脚本背景。
在 dart 中,对象键无法通过点表示法访问.
。相反,它们像数组一样通过['key_name']
.
所以这就是为什么这条线不起作用
print(newValue.last_supported)
Run Code Online (Sandbox Code Playgroud)
这一个确实
print(newValue["last_supported"]);
Run Code Online (Sandbox Code Playgroud)
dart 中的点表示法仅适用于类实例,不适用于 Map(类似于 JavaScript 对象)。看看以下内容:
class User {
final String name;
final int age;
// other props;
User(this.name, this.age);
}
Run Code Online (Sandbox Code Playgroud)
现在,当您创建新的用户对象时,您可以使用点符号访问其公共属性
final user = new User("john doe", 20); // the new keyword is optional since Dart v2
// this works
print(user.name);
print(user.age);
// this doesn't work because user is an instance of User class and not a Map.
print(user['name]);
print(user['age]);
Run Code Online (Sandbox Code Playgroud)
有关该关键字的更多信息,您可以在此处new
阅读 v2 发行说明。
归档时间: |
|
查看次数: |
2293 次 |
最近记录: |