Search code examples
jsonflutterdartdecode

Decode json dart flutter


I need to decode the following JSON in Dart. When I perform the decoding, I encounter the following error. How can I resolve this?

Error: type '(Map<dynamic, dynamic>) => RicettaNew' is not a subtype of type '(dynamic) => dynamic' of 'f'

JSON:

[{"name":"ricetta1","values":
[{"key":"item1","value":"3"},
{"key":"item2","value":"8"},{"key":"item3","value":"13"}
,{"key":"item4","value":"18"},{"key":"item5","value":"23"},{"key":"item6","value":"14"},....

Flutter Code:

    var serverlink = "http://207.154.221.255:8600/api/recipes"+"/"+mc.model;
      var request = http.Request('GET', Uri.parse(serverlink));
      http.StreamedResponse response = await request.send();
      if (response.statusCode == 200) {
        var result = await response.stream.bytesToString();
        print("result: "+result);
        var list = jsonDecode(result.toString());
        lista=jsonDecode(result).map((Map m)=> RicettaNew.fromJson(m)).toList();

...
class RicettaNew {
  String name;
  List<Values> values = [];

  RicettaNew(this.name, this.values);

  RicettaNew.fromJson(Map json) {
    name = json["name"];

  }
}

Solution

  • just change your base [] braces to {}

    Because the json you want to pass is not correct json format

    Json format always starts and ends with { … }

    {   
        "name":"ricetta1",
        "values": [
                {"key":"item1","value":"3"},
                {"key":"item2","value":"8"},
                {"key":"item3","value":"13"},
                             {"key":"item4","value":"18"},
                             {"key":"item5","value":"23"}
    
                ]
    }
    

    before decoding parse your json on https://jsoneditoronline.org/ so you can identify its in right format or wrong

    & generate your model class on https://javiercbk.github.io/json_to_dart/