一,代码:
import 'package:flutter/material.dart';
import 'dart:convert';//定义解析后的类
class User {final String name;final int age;User({required this.name, required this.age});factory User.fromJson(Map<String, dynamic> json) {return User(name: json['name'],age: json['age'],);}//供打印对象使用@overrideString toString() {return 'User{name: $name, age: $age}';}//供打印json使用Map<String, dynamic> toJson() => {'name': name,'age': age,};}class JsonPage extends StatefulWidget {final Map arguments;// 为title设置一个默认参数,这样的跳转该界面时可以不传值。JsonPage({super.key, required this.arguments});@overrideState<JsonPage> createState() => _JsonPageState();
}class _JsonPageState extends State<JsonPage> {@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(backgroundColor: Theme.of(context).colorScheme.primaryContainer,title: Text(widget.arguments["title"]),),body: Center(child: ElevatedButton(onPressed: () async {//解析字符串后打印出来String jsonStr = '{"name": "John", "age": 25}';Map<String, dynamic> jsonMap = json.decode(jsonStr);User user = User.fromJson(jsonMap);print("解析后的对象:");print(user);print(jsonEncode(user));},child: Row(mainAxisSize: MainAxisSize.min, // 根据内容调整大小children: <Widget>[Icon(Icons.add), // 图标在左侧SizedBox(width: 10), // 可选:添加一些间隔Text("解析json"), // 文本在右侧],),),),);}
}
二,测试效果:
I/flutter ( 8612): 解析后的对象:
I/flutter ( 8612): User{name: John, age: 25}
I/flutter ( 8612): {"name":"John","age":25}