gpt4 book ai didi

dart - 转换JSON以使用字符串键和List 值进行映射

转载 作者:行者123 更新时间:2023-12-03 03:26:28 25 4
gpt4 key购买 nike

我正在尝试转换包含键字符串和值字符串数组的JSON。

据我了解,这应该工作:

import 'dart:convert';

void main() {
var jsonString = '{"key": ["1", "2", "3"]}';
var data = json.decode(jsonString) as Map;
var result = data.cast<String, List<String>>();
print(result);
}

但是我得到了错误 type 'List<dynamic>' is not a subtype of type 'List<String>' in type cast

但是,有趣的是以下内容可以正常工作:
import 'dart:convert';

void main() {
var jsonString = '{"key": "value"}';
var data = json.decode(jsonString) as Map;
var result = data.cast<String, String>();
print(result);
}

因此,我假设Dart 2中引入的 .cast<>方法不知道如何转换不是简单类型的嵌套类型,例如 Stringintbool

如何在不借助外部库的情况下将该对象转换为 Map<String, List<String>>

最佳答案

So, I assume that the .cast<> method introduced with Dart 2 doesn't know how to convert nested types that aren't simple types like String, int, or bool.



没错它只是执行一级深转换。您可以自己进行嵌套转换,例如:
void main() {
var jsonString = '{"key": ["1", "2", "3"]}';
var data = json.decode(jsonString) as Map;

var result = data.map((key, value) =>
MapEntry<String, List<String>>(key, List<String>.from(value)));
print(result.runtimeType);
}

这称为 Map.map()。有时候 Map.fromIterable()Map.fromIterables()更合适。集合类型有几种这样的方法可以在不同类型之间进行转换。

关于dart - 转换JSON以使用字符串键和List <String>值进行映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53770854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com