美文网首页
http网络请求 json转换Map Map转换Model

http网络请求 json转换Map Map转换Model

作者: yyggzc521 | 来源:发表于2020-02-09 21:14 被阅读0次

http库
pubspec.yaml文件添加http的依赖
dio

  • 用法1
import 'package:flutter/material.dart';

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

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

//MaterialApp组件作为根组件使用
// Scaffold  有下面几个主要属性
// appBar-界面顶部导航栏 body-界面显示的主要内容Widget drawer-抽屉菜单控件

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement buildå
    return MaterialApp(home: HttpDemo());
  }
}

class HttpDemo extends StatefulWidget {
  HttpDemo({Key key}) : super(key: key);

  @override
  _HttpDemoState createState() => _HttpDemoState();
}

class _HttpDemoState extends State<HttpDemo> {
  @override
  void initState() {
    super.initState();
    fetchHttpData();
  }

//get的用法  这个URL有效
  fetchHttpData() async {
    var url1 = 'https://resources.ninghao.net/demo/posts.json';
    final result = await http.get(url1);
    //状态码
    print('Response status: ${result.statusCode}');
    //具体数据
    print('Response body: ${result.body}');
  }

  //post的用法  下面的URL无效
  fetchData() async {
    var url = 'https://example.com/whatsit/create';

    var response =
        await http.post(url, body: {'name': 'doodle', 'color': 'blue'});
    print('Response status: ${response.statusCode}');
    print('Response body: ${response.body}');
    print(await http.read('https://example.com/foobar.txt'));
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Container()
    );
  }
}

json转换Map

import 'dart:convert';

import 'package:flutter/material.dart';

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

//MaterialApp组件作为根组件使用
// Scaffold  有下面几个主要属性
// appBar-界面顶部导航栏 body-界面显示的主要内容Widget drawer-抽屉菜单控件

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement buildå
    return MaterialApp(home: HttpDemo());
  }
}

class HttpDemo extends StatefulWidget {
  HttpDemo({Key key}) : super(key: key);

  @override
  _HttpDemoState createState() => _HttpDemoState();
}

class _HttpDemoState extends State<HttpDemo> {
  @override
  void initState() {
    super.initState();
    // fetchHttpData();
    final post = {'title': '这是标题', 'subTitle': '这是子标题'};

    print(post['title']);
    final postJson = json.encode(post);
    print(postJson);

    final postJsonConverted = json.decode(postJson);
    print(postJsonConverted['title']);
    print(postJsonConverted is Map);
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Container(),
    );
  }
}


  //自定义Model对象
  Future<List<Model>> fetchHttpData() async {
    var url1 = 'https://resources.ninghao.net/demo/posts.json';
    final result = await http.get(url1);
    //状态码
    print('Response status: ${result.statusCode}');
    //具体数据
    print('Response body: ${result.body}');

    if (result.statusCode == 200) {
      final responeBody = json.decode(result.body);
      List<Model> models = responeBody['models']
          .map<Model>((item) => Model.fromJson(item))
          .toList();

      return models;
    } else {
      throw Exception('fail to fetch posts');
    }
  }

Map转Model Model转json

import 'dart:convert';

import 'package:flutter/material.dart';

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

//MaterialApp组件作为根组件使用
// Scaffold  有下面几个主要属性
// appBar-界面顶部导航栏 body-界面显示的主要内容Widget drawer-抽屉菜单控件

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement buildå
    return MaterialApp(home: HttpDemo());
  }
}

class HttpDemo extends StatefulWidget {
  HttpDemo({Key key}) : super(key: key);

  @override
  _HttpDemoState createState() => _HttpDemoState();
}

class _HttpDemoState extends State<HttpDemo> {
  @override
  void initState() {
    super.initState();
    // fetchHttpData();
    final post = {'title': '这是标题', 'subTitle': '这是子标题'};

//Map转json
    print(post['title']);
    final postJson = json.encode(post);
    print(postJson);

//json转Map
    final postJsonConverted = json.decode(postJson);
    print(postJsonConverted['title']);
    print(postJsonConverted is Map);

//Map转Model
    final modelObject = Model.fromJson(postJsonConverted);
    print('标题:${modelObject.title},子标题:${modelObject.subTitle}');

//Model转json
    print('${json.encode(modelObject)}');
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Container(),
    );
  }
}

class Model {
  final String title;
  final String subTitle;

  Model(this.title, this.subTitle);
  Model.fromJson(Map json)
      : title = json['title'],
        subTitle = json['subTitle'];

  Map toJson() => {'title': title, 'subTitle': subTitle};
}

相关文章

网友评论

      本文标题:http网络请求 json转换Map Map转换Model

      本文链接:https://www.haomeiwen.com/subject/chxixhtx.html