在 dart 中解码 GraphQL 查询结果

Decode GraphQL query result in dart

以前可能有人问过这个问题,但即使按照 Whosebug 此处的其中一篇帖子中提到的步骤进行操作,我也无法使我的查询正常工作。 这是我在点击按钮时调用的 graphql 查询

void findUserOnBol() async {
  try {
      String graphQLDocument = '''query findUser($id: ID!) {
      findUser(userId: $id) {
      id
    }
  }''';
      var operation = Amplify.API.query(
        request: GraphQLRequest<String>(
            document: graphQLDocument,
            apiName: 'API_KEY',
            variables: {'id': 'USER-14161234567'}));

    var response = await operation.response;
    Map<String, dynamic> data = jsonDecode(response.data) as Map<String,dynamic>;
    print(data);
    print(data['id]);
  } on ApiException catch (e) {
    print('Query failed: $e');
  }
}

在上面的查询中,即使有数据returned,print(data['id'])语句总是return null,下面是运行结果-

flutter: {findUser: {id: USER-14161234567}} //printing data returns valid data
flutter: null //printing data['id'] returns null.

数据:{findUser: {id: USER-14161234567}}

id 不在地图的顶层,您应该先获取 ['findUser'] 键,然后再获取 ['id'],因为这是嵌套的。

    print(data);
    print(data['findUser']['id']);