如何在 Flutter 中解码 JSON?

2023-12-03

如何在 Flutter 中解码 JSON?

问题很简单,但答案却不简单,至少对我来说是这样。

我有一个使用大量 JSON 字符串的项目。基本上,应用程序和服务器之间的整个通信都是通过 JSON 进行的。

我一直在使用JSON.decode(json_string)来处理它,但今天我更新了 Flutter 核心(0.5.8-pre.178)并且 JSON.decode 不再可用。

我去了颤动文档寻求帮助,但它仍然说使用 JSON.decode。

那么,今后如何在 Flutter 中解码 JSON 呢?


您将需要导入dart:convert:

import 'dart:convert';

内联示例

String rawJson = '{"name":"Mary","age":30}';

Map<String, dynamic> map = jsonDecode(rawJson); // import 'dart:convert';

String name = map['name'];
int age = map['age'];

Person person = Person(name, age);

Note:当我在服务器端 Dart 的 VS Code 中执行此操作时,我必须指定类型:

Map<String, dynamic> map = jsonDecode(rawJson) as Map<String, dynamic>;

模型类示例

模型类包含地图转换逻辑:

class Person {
  String name;
  int age;
  Person(this.name, this.age);

  // named constructor
  Person.fromJson(Map<String, dynamic> json)
      : name = json['name'],
        age = json['age'];

  // method
  Map<String, dynamic> toJson() {
    return {
      'name': name,
      'age': age,
    };
  }
 
}

JSON 转换是这样完成的:

String rawJson = '{"name":"Mary","age":30}';
Map<String, dynamic> map = jsonDecode(rawJson);
Person person = Person.fromJson(map);

查看我的完整答案here.

生成序列化代码

编写序列化代码时很容易出错,所以一般建议使用json_serialized由 Dart 团队打包。但是,您可以了解不同方法的优缺点here.

如果您想要更多选择,您还可以查看内置值包裹。

See also

  • 在 Flutter 中使用 JSON - 第 1 部分:dart:convert
  • 在 Flutter 中使用 JSON - 第 2 部分:json_serialized
  • 使用 Flutter 反序列化 JSON 的一些选项
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Flutter 中解码 JSON? 的相关文章

  • Sliver Appbar [折叠工具栏] 在 Flutter 中从左到中心动画标题

    这是我的折叠工具栏的构建方法 override Widget build BuildContext context return SafeArea child CustomScrollView controller controller s
  • 用数组反向查找对象

    假设我有一个这样的对象 resourceMap a 0 1 2 3 4 5 6 7 8 9 10 b 11 12 c 21 23 d 54 55 56 57 510 确定是否的最佳方法是什么resourceId 21将会 c 我们不知道钥匙
  • PHP 中的简单 JSON 请求

    我有以下 json country code latitude 45 9390 longitude 24 9811 zoom 6 address city country Romania country code RO region 我只想
  • 使用 python 将 bibtex 文件转换为 html (也许是 pybtex?)

    您好 我想解析 bibtex 出版物文件并对特定字段 例如年份 进行排序并过滤某些内容 然后将其放在网站上 我遇到了 pybtex 它可以读取和解析 bibtex 文件 但它基本上没有记录 我不知道如何对条目进行排序 pybtex 是可行的
  • 在 JSON 数组中按属性查找对象

    我在获取 JSON 数据中的字符串时遇到问题 格式如下 name Alice age 20 id David last 25 id John last 30 有时它会一起改变位置 John从第三名到第二名 name Alice age 20
  • json文件格式的升级路径

    我们将 Java 应用程序的用户首选项存储在 JSON 文件中 使用Jackson http jackson codehaus org 随着我们继续开发该应用程序 我们将添加首选项 重命名首选项并删除过时的首选项 当用户将应用程序升级到下一
  • 使用 isdigit 表示浮点数?

    a raw input How much is 1 share in that company while not a isdigit print You need to write a number n a raw input How m
  • 未捕获的类型错误:未定义不是函数

    我收到消息Uncaught TypeError Undefined is not a function当我尝试调用家庭控制器中的方法时 也许关于我为什么收到此消息的建议 findIdpActivities function pernr ca
  • 从哈希中删除 nil 值

    我希望从哈希中删除具有nil value article是一个存储每篇文章的类 并且attributes方法将文章存储为散列 预期结果 articles results author null title Former bar manage
  • 可以通过 url 发送 JSON 吗?

    我有一个 ruby 哈希 其中键是 url 值是整数 我将哈希值转换为 JSON 我想知道是否能够通过 AJAX 请求在 url 内发送 JSON 然后从 params 哈希值中提取该 JSON 另外 我将把 JSON 化的 ruby 哈希
  • 使用来自Processing-JS的JSON

    我想使用编写一个应用程序处理 JS http processingjs org 并且我希望能够使用服务器端数据加载它 我还没有编写服务器端 所以我可以使用任何东西 但似乎明显的 AJAX 事情是使用 JSON 将数据上传到页面中 如何从我的
  • 如何在 json 中输出 javascript 日期

    我正在尝试时间线图表 http code google com apis visualization documentation gallery annotatedtimeline html Data Format http code go
  • 尽管遵循安装说明,Beaker 仍无法找到 Python 和 Julia 安装

    我最近安装了 Beaker Notebook 但无法启动 Python 我已经安装了 Python 它是使用 Anaconda 安装的 实际上推荐用于 Beaker 我已经编辑过beaker pref json指向我的安装 见下文 但它无法
  • Python - UnicodeDecodeError:“charmap”编解码器无法解码位置 44 中的字节 0x81:字符映射到 <未定义>

    在 Python 3 Jupyter 笔记本上使用 pandas 我得到了 UnicodeDecodeError charmap 编解码器无法解码字节 0x81 位置 44 字符映射到 尝试读取如下所示的 json 文件时出错 Test1
  • Jackson Kotlin - 反序列化 JsonNode

    Problem 我有字符串形式的 JSON 内容 我首先想用 Jackson 以编程方式遍历它 然后 当我有感兴趣的节点时 我想反序列化它 我尝试过的 我已使用 mapper readValue 成功反序列化字符串 但现在我想在 jsonN
  • 使用 JSONArray 还是普通数组来存储/读取数据更有效?

    我正在使用一个连接到PHP MySQL返回所有内容的服务器JSON格式 例如 用户列表作为JSONArray of JSONObject 每个对象都包含单个用户的信息 姓名 位置 电话号码等 处理这种格式的信息时 将所有内容保留在其中会更有
  • 解析时间字符串,如“1h 30min”

    任何人都知道 Java 库可以将 30min 或 2h 15min 或 2d 15h 30min 等时间字符串解析为毫秒 或某种 Duration 对象 Joda Time 可以做这样的事情吗 我有一个丑陋的长方法来维护它进行此类解析 并且
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • 使用 JSON 的 Pentaho HTTP Post

    我是 Pentaho 的新手 我正在尝试执行以下工作流程 从数据库中读取一堆行 做一些转换 将它们以 JSON 格式发布到 REST Web 服务 我已经使用输入步骤和 Json 输出步骤解决了前两个问题 但是 我在执行最后一步时遇到两个问
  • GSON 将带有日历的对象反序列化为带有 Mongo 日期的 json 并返回

    我有一些实体 其中包含一些日历属性 我想以将它们存储为 GSON 序列化 JSON 中的日期的方式对其进行序列化 因为 Mongo 可以将 date 存储为 new ISODate 我们通常通过使用 ExclusionStrategy 忽略

随机推荐

  • 如何使用VBA中的循环函数填充多个文本框

    我用 VBA 制作了一个带有许多文本框的用户界面 我读了一张 Excel 工作表 并将该工作表的所有值放入用户界面的所有文本框中 因此用户可以修改这些值 然后将其保存在 Excel 工作表中 因为我们不能像数组一样命名文本框 textBox
  • IE7下有两个同名的cookie怎么办?

    一些背景 除了 PHPSESSID 之外 CakePHP 还写入它自己的会话 ID cookie 这用于验证请求 然后 SWFupload 发送一个文件和该令牌进行身份验证 并被选为新的用户代理 因此在 cakephp 中 您必须禁用 ch
  • 具有命名空间解组功能的 JAXB(使用 REST 服务中的 Jersey)

    我正在尝试从 Convio 的公共 api 解组一个简单的 xml 文档 我没有收到以下代码的任何编译器错误 但它也不会产生结果 这些值为空 如果我从 xml 文档中删除架构和命名空间项 并从 POJO 中删除命名空间属性 那么它将运行得很
  • plot_surface : 获取写在右下角的 x,y,z 值

    我是 matplotlib 的新用户 使用 matplotlib 和plot surface 绘制曲面 3D 时 会出现一个带有图形的窗口 在该窗口中 右下角有鼠标实际位置的坐标 是否可以访问这些值 我在互联网上搜索过 但提出的解决方案很少
  • 新版本的c++

    C 是否会推出新版本 何时推出 C C 0X 的创建者常见问题解答 http www2 research att com bs C 0xFAQ html 问题 C 0x什么时候成为正式标准 但 C 0X 确实在某种程度上存在于各种编译器中
  • 如何在Three20的AppDelegate中添加全局右栏按钮(UINavigationController)

    我想在全局 AppDelegate 中添加一个全局右栏按钮 这样我的所有视图控制器都会自动具有此按钮 我在AppDelegate中添加了 navigator window rootViewController navigationContr
  • 将具有重复字符的字符串拆分为列表

    我对正则表达式没有太多经验 但我已经阅读了很多相关内容 假设有一个字符串s 111234 我想要一个列表 其中字符串分为L 111 2 3 4 我的方法是让一组检查它是否是数字 然后检查该组是否重复 像这样的东西 L re findall
  • JS:获取contentEditable div中所有选定节点的数组

    你好 我使用 contentEditable 已经有一段时间了 我想我已经很好地处理它了 我回避的一件事是如何获取对部分或完全在用户选择范围内的所有节点的引用数组 有人有主意吗 可以从以下几点开始
  • 导航到不同的 html 页面时,jQuery Mobile 页面事件不会触发

    我正在尝试使用导航到不同的 html 页面 mobile changePage PlayGame html transition slideup true true PlayGame html 正在转换为 但是 以下内容均未触发 docum
  • 我们如何在单个 JSF 页面中使用多个 标记或 标记?

    我的问题是 我在一个 JSF 页面中有 2 个表单 每个表单都有其
  • 如何使用 UIGestureRecognizer 检测圆周运动

    我希望能够检测到某人的手指在屏幕上画圆周运动 就像他们在画 O 一样 这可以通过 UIGestureRecognizer 实现吗 我认为这个问题的答案取决于您对圆周运动的定义以及您打算如何使用它 例如 您想知道用户手指沿着圆移动了多少度 或
  • 根据变量值生成数据总和

    我有类似这样的数据 Hosp Score Var1 Var2 Var3 1 0 5 3 0 1 1 10 8 1 1 2 11 8 2 1 3 5 3 2 2 0 6 4 0 2 2 10 6 1 2 3 10 7 2 3 1 4 3 2
  • 当条件不满足时重置 pandas cumsum [重复]

    这个问题在这里已经有答案了 我经历了不同的 stackoverflow 问题并最终发布它 因为我无法解决我面临的问题之一 我有一个如下所示的数据框 A B C group1 group1 c 12 group1 group1 c 12 gr
  • 从 PostgreSQL 函数运行 Python 脚本

    每次在 PostgreSQL 表上执行更新或插入操作时 我都面临一个 小 问题 该脚本将提取更新或插入的数据并将其写入文件 环境数据 乌班图18 04 仿生海狸 PostgreSQL 10 和 Python 3 6 SELECT FROM
  • MinGW64 无法进行 32 字节堆栈对齐(Windows x64 上的 AVX 所需),轻松解决或切换编译器?

    我正在尝试使用 AVX 指令和 Windows 64 位 我对 g 编译器很满意 所以我一直在使用它 但是 报告了一个大错误here并提出了非常粗略的解决方案here 基本上 m256 变量无法在堆栈上对齐才能与 avx 指令一起正常工作
  • 如何确定OGG文件的长度

    我正在制作节奏游戏 我需要一种快速方法来获取 ogg 文件的长度 我能想到的唯一方法是非常快速地传输文件而不播放它 但如果我有数百首歌曲 这显然是不切实际的 另一种方法是将文件的长度存储在某种属性文件中 但我想避免这种情况 我知道一定有某种
  • 无法在模拟器中启动 AVD:未找到 QT 库

    我是 Android Studio 新手 在使用模拟器时遇到问题 当我尝试运行时 它不断崩溃并显示 无法在模拟器中启动 AVD 6816 错误 android qt qt setup cpp 28 在以下位置找不到 Qt 库 C Users
  • Cocoa Interface Builder 的“属性检查器”类似窗口

    我正在制作一个 Cocoa 应用程序 我想要一个像 Interface Builder 中的 属性检查器 这样的面板 因此 顶部有大标签和可折叠 可展开的组 有谁知道我该怎么做 这是属性检查器的图像 属性检查器 http developer
  • PHP mysqli_fetch_all 给我一个空白屏幕

    我刚刚将一些内容从本地计算机推送到实时站点 但到处都是空白页面 当我使用所有东西时 我将问题追踪到 mysqli fetch all 它为什么要这样做 我该如何解决它 如果我使用 mysqli fetch array 或 mysqli fe
  • 如何在 Flutter 中解码 JSON?

    如何在 Flutter 中解码 JSON 问题很简单 但答案却不简单 至少对我来说是这样 我有一个使用大量 JSON 字符串的项目 基本上 应用程序和服务器之间的整个通信都是通过 JSON 进行的 我一直在使用JSON decode jso