flutter鸿蒙版本数据处理常用总集

72 阅读2分钟

写在前面 本地访问json

  1. 确保文件路径正确 示例目录 确保文件 one.json 实际上位于项目的 assets/json/ 目录中。项目结构应该类似于:

your_flutter_project/ │ ├── assets/ │ └── json/ │ └── one.json │ ├── lib/ │ └── main.dart │ └── pubspec.yaml 2. 更新pubspec.yaml 确保在pubspec.yaml中注册资产的路径。请检查以下内容:

确保pubspec.yaml文件的缩进是正确的(YAML文件对缩进非常敏感)。也要确保没有多余的空格和其他格式错误。

flutter: assets: - assets/json/one.json 3. 正确加载JSON文件 在现有的代码中,loadString是一个异步方法,因此应该使用async和await来加载文件。以下是更新后的代码:

import 'dart:convert'; // 添加这一行以便使用 json.decode import 'package:flutter/material.dart'; import 'package:flutter/services.dart';

void main() { runApp(MyApp()); }

class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Bottom Navigation', theme: ThemeData( primarySwatch: Colors.blue, ), home: HomePage(), ); } }

class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); }

class _HomePageState extends State { String jsonResponse = '';

@override void initState() { super.initState(); loadJsonData(); }

Future loadJsonData() async { try { // 使用await加载JSON数据 final String response = await rootBundle.loadString('assets/json/one.json'); setState(() { jsonResponse = response; // 将加载的JSON数据保存到变量中 }); print(jsonResponse); // 输出JSON内容 } catch (e) { print("Error loading JSON: $e"); } }

@override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Flutter Bottom Navigation'), ), body: Container( child: Text(jsonResponse.isNotEmpty ? jsonResponse : "Loading..."), ), ); } }

JSON转Map 在 Flutter 中,可以使用 dart:convert 库中的 jsonDecode 方法将 JSON 字符串转换为 Map。

示例代码 import 'dart:convert'; void main() { // JSON 字符串 String jsonString = '{"name": "John", "age": 30}'; // JSON 转换为 Map Map<String, dynamic> userMap = jsonDecode(jsonString); // 打印结果 print(userMap); // 输出: {name: John, age: 30} } 在上面的示例中,我们定义了一个 JSON 字符串,并使用 jsonDecode 方法将其转换为 Map。输出结果是一个包含键值对的 Map。

Map转JSON 要将 Map 转换为 JSON 字符串,我们同样可以使用 dart:convert 库中的 jsonEncode 方法。

示例代码 import 'dart:convert'; void main() { // 定义一个 Map Map<String, dynamic> userMap = { 'name': 'John', 'age': 30 }; // Map 转换为 JSON String jsonString = jsonEncode(userMap); //打印结果 print(jsonString); // 输出: {"name":"John","age":30} } 在此示例中,我们创建了一个 Map,然后使用 jsonEncode 将其转换为 JSON 字符串。输出是有效的 JSON 格式。

JSON转对象 要将 JSON 字符串转换为 Dart 对象,我们需要定义一个类,并在类中实现一个工厂构造函数,以便从 Map 创建对象。

示例代码 import 'dart:convert'; // 定义 User 类 class User { final String name; final int age; User({required this.name, required this.age}); // 从 Map 创建 User 对象 factory User.fromJson(Map<String, dynamic> json) { return User( name: json['name'], age: json['age'], ); } } void main() { // JSON 字符串 String jsonString = '{"name": "John", "age": 30}'; // 将 JSON 字符串转换为 Map Map<String, dynamic> userMap = jsonDecode(jsonString); // 创建 User 对象 User user = User.fromJson(userMap); // 打印结果 print('Name: user.name,Age:{user.name}, Age: {user.age}'); // 输出: Name: John, Age: 30 }

在这个例子中,我们定义了一个 User 类,并实现了 fromJson 工厂构造函数。我们首先将 JSON 字符串转换为 Map,然后使用 User.fromJson 方法创建 User 对象。

对象转JSON 要将 Dart 对象转换为 JSON 字符串,我们需要在类中实现一个方法,将对象的属性转换为 Map,然后使用 jsonEncode 方法进行编码。

示例代码 import 'dart:convert'; // 定义 User 类 class User { final String name; final int age; User({required this.name, required this.age});

// 将 User 对象转换为 Map Map<String, dynamic> toJson() { return { 'name': name, 'age': age, }; } } void main() { // 创建 User 对象 User user = User(name: 'John', age: 30); // 将 User 对象转换为 JSON 字符串 String jsonString = jsonEncode(user.toJson()); // 打印结果 print(jsonString); // 输出: {"name":"John","age":30} }

在这个示例中,我们定义了 toJson 方法,它将 User 对象的属性转换为 Map。然后,我们使用 jsonEncode 将 Map 转换为 JSON 字符串。

写在最后 在 Flutter 中,处理 JSON、Map 和 Dart 对象之间的转换是非常重要的技能。通过使用 dart:convert 库中的 jsonDecode 和 jsonEncode 方法,我们可以轻松实现 JSON 和 Map 之间的转换,以及 JSON 和 Dart 对象之间的转换。掌握这些基本操作将使你能够更高效地处理应用程序中的数据。

希望这篇博客能帮助你更好地理解 Flutter 中的 JSON 处理方法! ————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                    

原文链接:blog.csdn.net/lbcyllqj/ar…