flutter:解析json

一,代码:

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'],
    );
  }

  //供打印对象使用
  @override
  String 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});
  @override
  State<JsonPage> createState() => _JsonPageState();
}

class _JsonPageState extends State<JsonPage> {

  @override
  Widget 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}

 

posted @ 2025-03-29 09:04  刘宏缔的架构森林  阅读(20)  评论(0)    收藏  举报