网站建设采购,网站制定公司,手机应用商店下载app,找做企业网站文章目录 概念介绍解析方法convert库插件工具 示例代码经验总结 我们在上一章回中介绍了对dio库进行封装相关的内容#xff0c;本章回中将介绍
如何在Flutter中解析JSON数据.闲话休提#xff0c;让我们一起Talk Flutter吧。 概念介绍
我们在前面章回中介绍了通… 文章目录 概念介绍解析方法convert库插件工具 示例代码经验总结 我们在上一章回中介绍了对dio库进行封装相关的内容本章回中将介绍
如何在Flutter中解析JSON数据.闲话休提让我们一起Talk Flutter吧。 概念介绍
我们在前面章回中介绍了通过dio发起Http相关的网络操作这些操作的结果都是JSON格式的数据。我们在本章回中将介绍如何解析这些JSON数据。如果有看官不知道什么是JSON数据的话点击这里查看我以前的博客。
在项目中我们使用的是dart中的类对象这些类是依据项目需求封装而成的解析的目标就是把JSON格式的数据转换成使用类封装的数据。JOSN的本质是String类型的数据它与map类型相匹配因此解析的本质就是把String类型的数据 转换成map类型的数据。
解析方法
convert库
如果我们自动去解析JSON的话比较麻烦dart官方提供了convert库来解析JSON数据首先创建一个JsonDecoder对象然后使用该对象的convert()方法就可以把JSON字符串转换成Map类型的对象具体内容可以参考示例代码。
该库还可以反向操作把封装类中的数据转换成JSON格式的数据。操作步骤如下首先创建一个 JsonEncoder类型的对象然后使用该对象的conver()方法注可以Map类型的数据转换成JSON字符串。具体内容可以参考示例代码。
插件工具
除了官方提供的方法外也有一些第三方提供了解析工具比如我之前推荐的三方工具FlutterJsonBeanFactory它可以通过插件的方式安装到AndroidStudio中然后把JSON字符串复制到工具中工具就会自动生成转换类(类名由自己指定)转换类提供了相关的方法给开发者使用详细如下
fromJson()方法 把JSON字符串转换成Dart类对象toJson()方法 把Dart类对象转换成JSON字符串
这两个方法都是静态方法可以通过类名来调用详细的使用方法可以参考示例代码。该工具主打一个智能和自动不过它也有缺点会自动在lib目录下生成一个与类名相同的dart文件该文件的名字不是驼峰命名法而是使用了下划线命名方法同时还会在lib目录下生成一个名叫generated的目录该目录中包含了工具生成的代码这些代码就是上面两个转换方法的源代码。这些自动生成的文件和项目中原来的文件不一样给项目的管理带来了麻烦。
示例代码
///JSON字符串转换成Map类型的对象
const JsonDecoder decoder JsonDecoder();const String jsonString {data: [{text: foo, value: 1 },{text: bar, value: 2 }],text: Dart}
;final MapString, dynamic object decoder.convert(jsonString);final item object[data][0];
print(item[text]); // foo
print(item[value]); // 1print(object[text]); // Dart///Map类型的数据转换成JSON字符串
const JsonEncoder encoder JsonEncoder();
const data {text: foo, value: 2};final String jsonString encoder.convert(data);
print(jsonString); // {text:foo,value:2}///使用插件工具解析
CustomClassType.fromJson(jsonString);
CustomClassType.toJson(data);以上示例代码来源于convet库官方给出的示例。更加详细的内容可以参考官方文档。使用工具解析时代码比较少主要是复用了部分官方代码。我在这里就不演示程序的运行结果了建议大家自己动手去实践。
经验总结
我们在本章回中介绍了两种解析JSON数据的方法它们有各自的优缺点详细总结如下
convert库官方提供的比较权威使用也很方便对于简单的JSON字符串使用容易对于复杂的JSON字符串使用繁杂主要是需要手写多个map中的key。插件工具三方提供比较流行集智能和自动化于一身使用十分简单缺点是生成了许多与项目不一致的文件影响项目管理。
大家可以依据自身项目的需求结合以上两种方法的优缺点选择其中一种解析方法。以上仅是个人经验欢迎大家在评论区交流与讨论。
看官们关于在Flutter中解析JSON数据相关的内容就介绍到这里欢迎大家在评论区交流与讨论!