NosshaMethod in dart for JSON.decode

时间:2017-06-24 16:20:04

标签: json dart

我试图从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)

我在这里错过了什么或做错了什么?

1 个答案:

答案 0 :(得分:2)

首先,在导入dart:convert库时,您会给它一个名为JSON的别名。这意味着您必须使用它;

JSON.JSON.decode(jsonString);

我认为您要使用show代替as。有关详细信息,请参阅this SO问题。

另一个问题是这一行;

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');
});