我试图从DART中的文件中解析JSON。我已经设法读取文件并打印它,但是当我尝试将其转换为JSON时,它会引发和错误。
file.dart:
import 'dart:convert' as JSON;
import 'dart:io';
main() {
final jsonAsString = new File('./text.json').readAsString().then(print); //Successful printing of json
final json = JSON.decode(jsonAsString);
print('$json');
}
错误:
Unhandled exception:
NoSuchMethodError: No top-level method 'JSON.decode' declared.
Receiver: top-level
Tried calling: JSON.decode(Instance of '_Future')
#0 NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:196)
#1 main (file:///Users/ninanjohn/Trials/dartTrials/stubVerifier.dart:7:15)
#2 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:265)
#3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:151)
我在这里想念或做错了什么?
首先,当导入dart:convert
库时,您将其给它一个称为JSON
的别名。这意味着您必须像;
JSON.JSON.decode(jsonString);
我认为您想使用show
而不是as
。有关更多详细信息,请参阅此问题。
另一个问题是
final jsonAsString = new File('./text.json').readAsString().then(print);
您实际上并未将String
分配给该变量,因为.then()
方法正在返回Future
。
同步读取文件;
final jsonAsString = new File('./text.json').readAsStringSync();
print(jsonAsString);
final json = JSON.decode(jsonAsString);
print('$json');
或将其更改为...
new File('./text.json').readAsString().then((String jsonAsString) {
print(jsonAsString);
final json = JSON.decode(jsonAsString);
print('$json');
});