【问题标题】:how can i get response from json in flutter我如何在颤动中从 json 获得响应
【发布时间】:2019-09-02 09:12:20
【问题描述】:

第一次让我的登录屏幕颤抖,我尝试了很多解析 json 的方法,但到目前为止都没有奏效。谁能帮我从 json 得到响应,这样我也可以了解一下。

---my model class

class User{
  String email;
  String password;
  String token;

  User({
    this.email,
    this.password,
    this.token
  });

  factory User.fromJson(Map<String, dynamic> parsedJson){
   // Map json = parsedJson['user'];
    return User(
        email: parsedJson['email'],
       password: parsedJson['password'],
       token: parsedJson['token']
      );
  }
}


-------
json for response.

Future loadUser() async{
   final response = await  http.get(url, headers : { 
    HttpHeaders.contentTypeHeader: 'application/json'
  }
  body : User.fromJson(response);
  print(user.token);
   );


    enter code here

}
-----

{
    "email": "zxc@example.com",
    "password": "aa718893bfe3e587047c81af40269d14",
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6Mn0.MGBf"
}

【问题讨论】:

    标签: json flutter


    【解决方案1】:

    您可以使用

    解析您的 JSON 字符串
    final user = userFromJson(jsonString);
    

    或使用 userToJson 函数将您的用户对象转换为 json 字符串

    用户类代码

    // To parse this JSON data, do
    //
    //     final user = userFromJson(jsonString);
    
    import 'dart:convert';
    
    User userFromJson(String str) => User.fromJson(json.decode(str));
    
    String userToJson(User data) => json.encode(data.toJson());
    
    class User {
        String email;
        String password;
        String token;
    
        User({
            this.email,
            this.password,
            this.token,
        });
    
        factory User.fromJson(Map<String, dynamic> json) => new User(
            email: json["email"],
            password: json["password"],
            token: json["token"],
        );
    
        Map<String, dynamic> toJson() => {
            "email": email,
            "password": password,
            "token": token,
        };
    }
    

    【讨论】:

      【解决方案2】:

      使用 Flutter 官方的 http 包进行 GET 和 POST 操作。

      https://pub.dev/packages/http

      要安装http 包,请将其添加到pubspec.yaml 的依赖项部分。您可以在 Pub 网站上找到最新版本的 http 软件包。

      dependencies:
        http: <latest_version>
      

      要执行GET操作调用http.get(),

      http.get("http://api.urbandictionary.com/v0/define?term=api").then(
        (response) // Server response
          {
            if(response.statusCode==200) // Checking if the transaction was successful
              {
                print(response.body);// Your response body
              }
             else print("The transaction was unsuccessful");
          }
      );
      

      如果你想解析你的json请求,

      https://flutter.dev/docs/cookbook/networking/background-parsing

      参考:https://flutter.dev/docs/cookbook/networking/fetch-data

      【讨论】:

        【解决方案3】:
        Future loadUser() async{
        
            final response = await  http.get(url, 
                headers : { HttpHeaders.contentTypeHeader: 'application/json' }
                Map<String,dynamic> parsedJson = json.decode(response.body);
                body : User.fromJson(parsedJson); 
            );
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-07-07
          • 2021-03-10
          • 2021-08-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-13
          • 1970-01-01
          相关资源
          最近更新 更多