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

写在前面

本地访问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是一个异步方法,因此应该使用asyncawait来加载文件。以下是更新后的代码:

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<HomePage> {
  String jsonResponse = '';

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

  Future<void> 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.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 库中的 jsonDecodejsonEncode 方法,我们可以轻松实现 JSON 和 Map 之间的转换,以及 JSON 和 Dart 对象之间的转换。掌握这些基本操作将使你能够更高效地处理应用程序中的数据。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淼学派对

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值