Convert all the keys and values of a Map to String in Dart

Viewed 3167

The problem I am having is related to serialization and decoding JSON. I am trying to serialize a Protobuf message to use it with redux persist.

This is the method I call to serialize my object:

  Map<String, dynamic> toJSON(){

    return <String, dynamic>{
        'isLogged': this.isLogged,
        'isExpired': this.isExpired,
        'protoUser':
            this.protoUser == null ? null : this.protoUser.writeToJsonMap()),
        'error': this.error,
      }
  };

and this is the method I use to read the persisted state:

  factory AuthState.fromJSON(Map<String, dynamic> json){
    new AuthState(
      isLogged: json['isLogged'],
      isExpired: json['isExpired'],
      error: json['error'],
      protoUser: json['protoUser'] == null
          ? null
          : new Auth.fromJson(json['protoUser'].toString()),
    );
  }

The problem I have is that writeToJsonMap do not write a valid JSON map for dart. So when reading the serialized state, I get this error:

E/flutter (24643): FormatException: Unexpected character (at character 2)
E/flutter (24643): {1: 200, 2: test1, 3: test2, 4: {1: 1, 3: Mike, 4: tester}}

also asked on https://github.com/dart-lang/protobuf/issues/136

1 Answers
Related