我有 json,其中每个值都编码为 base64。我想遍历整棵树并解码每个值。这需要是自动的。代码中不能指定 json 键。它需要自己下降。我该怎么做?
这是我目前的情况
Map<String, dynamic> parseJson(String response) {
var data = json.decode(response);
// Here I need to decode from base64
return data;
}
这是json的样子
{
"app_title":"RnJpU8Okaw==",
"app_color":"I0ZGRUUzMw==",
"app_tabs":[
{
"title":"RW4gdGl0ZWwgw6XDpMO2w4XDhMOW",
"content":"CkxpdGUgaW5uZWjDpWxsLiA8YnIgLz4gCjxiPmhlajwvYj4gCjxoMT50ZXN0PC9oMT4KPGEgaHJlZj0iaHR0cDovL2ZyaXNrb2xhLm51Ij5FbiBsw6RuazwvYT4KPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5MaXRlIGdyw7ZuIHRleHQga2Fuc2tlPzwvZGl2Pgo8aW1nIHNyYz0iaHR0cDovL2ZyaXNrb2xhLm51L2ltYWdlcy9zb2ZyaV9sb2dvdHlwLnBuZyIgLz4K"
},
{
"title":"RW4gdGl0ZWwgw6XDpMO2w4XDhMOW",
"content":"CkxpdGUgaW5uZWjDpWxsLiA8YnIgLz4gCjxiPmhlajwvYj4gCjxoMT50ZXN0PC9oMT4KPGEgaHJlZj0iaHR0cDovL2ZyaXNrb2xhLm51Ij5FbiBsw6RuazwvYT4KPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5MaXRlIGdyw7ZuIHRleHQga2Fuc2tlPzwvZGl2Pgo8aW1nIHNyYz0iaHR0cDovL2ZyaXNrb2xhLm51L2ltYWdlcy9zb2ZyaV9sb2dvdHlwLnBuZyIgLz4K"
},
{
"title":"RW4gdGl0ZWwgw6XDpMO2w4XDhMOW",
"content":"CkxpdGUgaW5uZWjDpWxsLiA8YnIgLz4gCjxiPmhlajwvYj4gCjxoMT50ZXN0PC9oMT4KPGEgaHJlZj0iaHR0cDovL2ZyaXNrb2xhLm51Ij5FbiBsw6RuazwvYT4KPGRpdiBzdHlsZT0iY29sb3I6IGdyZWVuIj5MaXRlIGdyw7ZuIHRleHQga2Fuc2tlPzwvZGl2Pgo8aW1nIHNyYz0iaHR0cDovL2ZyaXNrb2xhLm51L2ltYWdlcy9zb2ZyaV9sb2dvdHlwLnBuZyIgLz4K"
}
]
}
谢谢!
最佳答案
这就是你如何做到这一点,使用 Base64Codec
,如果你使用 utf8.decode
你不会丢失编码。
import 'dart:convert';
Base64Codec base64 = const Base64Codec();
Map<String, dynamic> parseJson(String response) {
final data = json.decode(response);
// Here I need to decode from base64
final dataTitle = data["app_title"];
final dataColor = data["app_color"];
//decode base64
final dataTitle64 = base64.decode(dataTitle);
final dataColor64 = base64.decode(dataColor);
//Strings
String stringTitle = utf8.decode(dataTitle64);
String stringColor = utf8.decode(dataColor64);
//content array
List<Item> list = List();
for (Map<String, dynamic> value in data["app_tabs"]){
final mapTitle = base64.decode(value["title"]);
final mapContent = base64.decode(value["content"]);
String stringTitle = utf8.decode(mapTitle);
String stringContent = utf8.decode(mapContent);
list.add(Item(stringTitle, stringContent));
}
//now you have your list of items
for(Item item in list){
print("ITEM: ${item.title} .. ${item.content}");
}
//return that list if you want
return data;
}
关于json - Dart 从 base64 转换整个 json 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53682474/