json - Dart 从 base64 转换整个 json 树

标签 json dart flutter base64

我有 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/

相关文章:

jquery - 在 Django 中处理 ajax json 对象 - 'QueryDict' 对象没有属性 'read' 错误

unit-testing - Flutter:测试共享偏好

flutter - 如何使用Flutter访问多页API?

javascript - 使用 Google Chart API 和 JSON 为 DataTable 创建折线图

php - 插入数据并以 json 形式返回

jquery - 将 JQuery 对象序列化为 JSON - 这应该可行吗?

firebase - 上载到Firebase存储失败

dart - 通过参数传递要在函数内修改的变量

flutter - 为什么我的自定义 flutter 脚手架会阻止状态刷新?

Flutter DART "Try adding an explicit type like ' 动态',或在您的分析选项文件中启用隐式动态。”