flutter如何实现json解码

在Flutter中如何实现JSON解码?我尝试使用jsonDecode方法解析从API获取的JSON数据,但遇到类型转换错误。请问正确的解码步骤是什么?是否需要先定义模型类?能否提供一个完整的示例代码,包括如何处理嵌套的JSON结构和异常情况?

2 回复

Flutter中可使用dart:convert库的json.decode()方法将JSON字符串转换为Dart对象。例如:

import 'dart:convert';
var data = json.decode(jsonString);

注意处理异常,确保JSON格式正确。

更多关于flutter如何实现json解码的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,可以通过以下几种方式实现JSON解码:

1. 使用 dart:convert 内置库

import 'dart:convert';

void main() {
  // JSON字符串
  String jsonString = '{"name": "张三", "age": 25, "city": "北京"}';
  
  // 解码JSON
  Map<String, dynamic> user = json.decode(jsonString);
  
  print(user['name']); // 输出:张三
  print(user['age']);  // 输出:25
}

2. 处理复杂JSON结构

import 'dart:convert';

void decodeComplexJson() {
  String jsonString = '''
  {
    "users": [
      {"name": "李四", "age": 30},
      {"name": "王五", "age": 28}
    ],
    "total": 2
  }
  ''';
  
  Map<String, dynamic> data = json.decode(jsonString);
  List<dynamic> users = data['users'];
  
  for (var user in users) {
    print('姓名: ${user['name']}, 年龄: ${user['age']}');
  }
}

3. 使用模型类(推荐)

创建数据模型类:

class User {
  final String name;
  final int age;
  final String city;

  User({required this.name, required this.age, required this.city});

  factory User.fromJson(Map<String, dynamic> json) {
    return User(
      name: json['name'],
      age: json['age'],
      city: json['city'],
    );
  }
}

// 使用
void useModelClass() {
  String jsonString = '{"name": "赵六", "age": 35, "city": "上海"}';
  Map<String, dynamic> userMap = json.decode(jsonString);
  User user = User.fromJson(userMap);
  
  print(user.name); // 输出:赵六
}

4. 处理网络请求中的JSON

import 'dart:convert';
import 'package:http/http.dart' as http;

Future<User> fetchUser() async {
  final response = await http.get(Uri.parse('https://api.example.com/user'));
  
  if (response.statusCode == 200) {
    Map<String, dynamic> json = jsonDecode(response.body);
    return User.fromJson(json);
  } else {
    throw Exception('Failed to load user');
  }
}

注意事项:

  • 使用 json.decode() 解码JSON字符串
  • 对于网络请求返回的数据,使用 jsonDecode()
  • 建议使用模型类来确保类型安全
  • 处理可能出现的异常情况

这些方法可以满足大多数JSON解码需求,选择哪种方式取决于你的具体使用场景。

回到顶部