无法从颤振中的 jsonDecoded 变量中提取密钥

Posted

技术标签:

【中文标题】无法从颤振中的 jsonDecoded 变量中提取密钥【英文标题】:Failed to extract the keys from a jsonDecoded variable in flutter 【发布时间】:2020-10-03 04:48:15 【问题描述】:

我是一个新手。我正在尝试从 jsonDecoded 变量中获取所有键。我已经尝试了我所知道的一切来获得这些钥匙。但我做不到。

所以我的问题是如何以最简单和最短的方式从 jsonDecoded 值中获取所有键?

这是我的代码:

    Future<String> getData() async 
    var response = await http.get(
        Uri.encodeFull(
            "https://my-json-server.typicode.com/dipcse07/demoJSON/db"),
        headers: "Accept": "application/json");

    //print(response.body);
    print('tapped');

    setState(() 
      data = jsonDecode(response.body.toString());

      collegeDataLenght = data['CollegeName1'].length;
      count = collegeDataLenght;
      teachersInfo = data['CollegeName1'];
      print(teachersInfo[0]['avatarImage']);
 );

*****需要从data**获取所有密钥

我从我的 api 链接获得的数据是


   "CollegeName1":[
      
         "teacherName":"Md Sazid hasan dip",
         "teacherID":"2345",
         "avatarImage":"url",
         "address":"9/2, shenbari Road, Shanki Para Bazar Mymensingh",
         "status":"Active",
         "joinDate":"date",
         "resignDate":"present"
      ,
      
         "TeacherName":"Talha Azadi",
         "teacherID":"2345",
         "avatarImage":"url",
         "address":"9/2, shenbari Road, Shanki Para Bazar Mymensingh",
         "status":"Active",
         "joinDate":"date",
         "resignDate":"present"
      
   ],
   "CollegeName2":[
      
         "teacherName":"Md Sazid hasan dip",
         "teacherID":"2345",
         "avatarImage":"url",
         "address":"9/2, shenbari Road, Shanki Para Bazar Mymensingh",
         "status":"Active",
         "joinDate":"date",
         "resignDate":"present"
      ,
      
         "TeacherName":"Talha Azadi",
         "teacherID":"2345",
         "avatarImage":"url",
         "address":"9/2, shenbari Road, Shanki Para Bazar Mymensingh",
         "status":"Active",
         "joinDate":"date",
         "resignDate":"present"
      
   ]

【问题讨论】:

你只想要“CollegeName1”和“CollegeName2”吗? 是的。如果可能所有的键 【参考方案1】:

您解析的 json 将返回一个 Map,其中有一个您可以使用的 .keys 属性:

void main() 
  final parsedJson = jsonDecode(json) as Map<String, dynamic>;
  print(parsedJson.keys);

【讨论】:

jsonDecode()。在 ide 建议中没有显示任何 .key 功能.. 我正在使用 android studio 和我的环境详细信息:版本:1.0.0+1 环境:sdk:">=2.1.0 这是因为Dart无法确定解码后得到什么样的数据,因为JSON允许多种类型。所以 Dart 只能将类型设置为dynamic,意思是“好的,我不知道你想要什么,但让我们看看它在程序运行时是否有效”。这就是我进行演员 as List&lt;String&gt; 的原因(只是为了确定类型,因为如果结果不是 List&lt;String&gt;,程序会崩溃。但是因为 JSON 输入是动态的,所以你不会得到太多帮助IDE。 我已经更新了答案以使其更有意义,并且还允许您从 parsedJson 的 IDE 中获得一些建议。 请注意,Dart 再次无法对 Map 中值的类型做出一般性说明,因此此处的类型将再次为 dynamic。 :) 那行得通.!!..谢谢伙计..我什至无法在 dart convert api.dart.dev/stable/2.8.4/dart-convert/… 的文档中找到它,这就是我感到困惑的原因..

以上是关于无法从颤振中的 jsonDecoded 变量中提取密钥的主要内容,如果未能解决你的问题,请参考以下文章

无法从 JSONDecoder 获取数据,没错,是我编的结构?

为啥我无法访问小部件中的变量?

如何使用条形码从 api 中提取信息并将其解析到用户详细信息小部件屏幕 - 在颤振中

无法识别颤振

无法从 TextField 颤振中退出

无法通过颤振应用程序中的用户 ID 获取特定的用户文档