【问题标题】:Failed to extract the keys from a jsonDecoded variable in flutter无法从颤振中的 jsonDecoded 变量中提取密钥
【发布时间】: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”吗?
  • 是的。如果可能所有的键

标签: json flutter dart flutter-dependencies


【解决方案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/… 的文档中找到它,这就是我感到困惑的原因..
猜你喜欢
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 2021-12-04
  • 1970-01-01
  • 2020-08-27
  • 2012-07-13
相关资源
最近更新 更多