首页 > 解决方案 > Flutter:解析具有多个键的json响应

问题描述

我试图从这个 json 响应中获取这些键的值:

{
    "pro": {
        "groups": [
            "1": {
                "name": "Base",
                "fields": [
                    {
                        "id": 3,
                        "value": {
                            "raw": "Name",
                        }
                    },
                    {
                        "id": 4,
                        "value": {
                            "raw": "avatar",
                        }
                    },
                ]
            },
            "2": {
                "name": "Base",
                "fields": [
                    {
                        "id": 6,
                        "value": {
                            "raw": "Name",
                        }
                    },
                    {
                        "id": 7,
                        "value": {
                            "raw": "avatar",
                        }
                    },
                ]
            }
    ]
}
}        
        

我可以得到值 "name": "Base"

json['pro']['groups']["1"]['name'],

但我无法获得关键“原始”的值。

如何获取键“原始”的值?

标签: jsonflutterdart

解决方案


的值fields是一个列表,因此您将获得一个raw值列表:

List<String> raw = json['pro']['groups']['1']['fields'].map((v) => v['value']['raw'];

此外,似乎组是一个数组,但作为一个对象?然后你可以做这样的事情:

List<String> raw = [];
Map<String, dynamic> groups = json['pro']['groups'];
for (var key in groups.keys) {
  raw.add(groups[key]['fields'].map((v) => v['value']['raw']);
}

或者

List<String> raw = groups.keys.map((key) => groups[key]['fields'].map((v) => v['value']['raw']);

我还没有测试过代码,但希望它能按预期工作:)


推荐阅读