JSON Разбор не разбирается во Flutter, если какой-то объект пуст - PullRequest
0 голосов
/ 03 мая 2020

У меня есть форма регистрации и бэкэнд PHP. PHP возвращая успех, данные об ошибках как JSON.

Ниже приведен мой файл JSONParse.

import 'dart:convert';

Signup signupFromJson(String str) => Signup.fromJson(json.decode(str));

String signupToJson(Signup data) => json.encode(data.toJson());

class Signup {
    Errors errors;
    bool success;

    Signup({
        this.errors,
        this.success,
    });

    factory Signup.fromJson(Map<String, dynamic> json) => Signup(

        errors: Errors.fromJson(json["errors"]),
        success: json["success"],
    );

    Map<String, dynamic> toJson() => {
        "errors": errors.toJson(),  
        "success": success,
    };
}

class Errors {
    String password1;
    String email1;
    String name;

    Errors({
        this.password1,
        this.email1,
        this.name,
    });

    factory Errors.fromJson(Map<String, dynamic> json) => Errors(
        password1: json["Password1"],
        email1: json["Email1"],
        name: json["Name"],
    );

    Map<String, dynamic> toJson() => {
        "Password1": password1,
        "Email1": email1,
        "Name": name,
    };
}

Вот пример JSON Данные.

Если вход не выполнен из-за какого-либо условия не выполнено.

{"errors":{"Email1":"Email could not be empty",
"Password1":"Password could not be empty",
"Name":"Your name must be between 3 to 30 characters!"},
"success":false}

Если вход выполнен успешно

{"success":false}

Мой JSONParse работает правильно, если условие не выполнено встретил. Я имею в виду, что он переустанавливает все ошибки и Успешно ложно.

Но если вход в систему успешен, то он не работает, проверяя больше, я обнаружил, что данные поступают нормально с PHP.

Signup signupFromJson(String str) => Signup.fromJson(json.decode(str)); - Data is coming in str variable.

factory Signup.fromJson(Map<String, dynamic> json) => Signup(

            errors: Errors.fromJson(json["errors"]), -- If error is nulll then it is not checking the success.
            success: json["success"],
        );

Проблема, возникающая здесь, когда ошибки равны нулю, а затем исчезла, не попала в раздел успеха.

Что я здесь не так делаю?

1 Ответ

1 голос
/ 03 мая 2020

Если вы добьетесь успеха, вы не получите ошибок, поэтому вы должны проверить нулевое значение и знать, куда вы переходите в класс ошибок.

В Registration.from Json:

 errors: Errors.fromJson(json["errors"] ?? {}),

В классе ошибок

 factory Errors.fromJson(Map<String, dynamic> json) => Errors(
        password1: json["Password1"] ?? '',
        email1: json["Email1"] ?? '',
        name: json["Name"] ?? '',
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...