阅读 163

Flutter 之数据解析

Dart JSON编码器和解码器

使用dart:convert进行json解析

  • Flutter采用Dart语言进行开发,那dart是如何进行json解析的呢?
  • 在dart中有个内置的json解析器: dart:convert ,对于较小项目可以借助它来进行手动JSON序列化。

1. json 转 map

import 'dart:convert';
...
const jsonString =
    "{ \"name\": \"Jack\"}";
//json转map
Map<String, dynamic> jsonMap = jsonDecode(jsonString);
print('name:${jsonMap['name']}');
复制代码

使用jsonDecode方法,会将json字符串解析成Map<String, dynamic> ,然后根据需要从map中查找所需的值就可以了,它没有外部依赖或其它的设置,对于小项目很方便。

2. map 转 json

String jsonStr = jsonEncode(jsonMap);
print('json:$jsonStr');
复制代码

jsonEncode可以很轻松的将object转成json字符串。 当您的项目变大时,手动编写序列化逻辑可能变得难以管理且容易出错。如果您在访问未提供的JSON字 段时输入了一个错误的字段,则您的代码将会在运行时会引|发错误。 如果您的项目中JSON model并不多,并且希望快速测试一下,那么手动序列化可能会很方便。

3.选择model还是 Map<String, dynamic>?

  • 对于小型项目并且json中字段不多的情况下可以直接使用Map<String, dynamic>来从中获取值更方便

  • 但对于大项项目或者json中的字段多且复杂时推荐大家使用model

原因:那么不推荐使用Map<String, dynamic>因为这样会有不小的副作用:比如你需要知道json中每个字段的名字,并且在各个使用的地方都需要保障这个名字没有拼写错误,大量的字段名不仅会减少代码的可读性,同时也会降低开发效率增大维护成本

文章分类
Android
文章标签