Dio no parsing Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String'

Viewed 27

I’m trying to parse one object from a Json response. My response.data is of type ‘_InternalLinkedHashMap<String, dynamic>’. I would like to transform it to the type of my object. So for doing that I use the method fromJson of my class.

Class code:

import 'dart:convert';

import 'package:.../stl/store_stl.dart';


class StoreSTLModel extends StoreSTL {const StoreSTLModel({
    required String storeId,
    required String storeName,
    required String subContextUrl,
    required List<dynamic> openingEvent,
    required List<dynamic> closingEvent,

    }) : super(
      storeId: storeId,
      storeName: storeName,
      subContextUrl: subContextUrl,
      openingEvent: openingEvent,
      closingEvent:closingEvent ,
      );


      Map<String, dynamic> toMap() {
    return <String, dynamic>{
      'storeId': storeId,
      'storeName': storeName,
      'subContextUrl': subContextUrl,
      'openingEvent': openingEvent.toList(),
      'closingEvent': closingEvent.toList(),
    };
  }

  factory StoreSTLModel.fromMap(Map<String, dynamic> map) {
    return StoreSTLModel(
      storeId: map['storeId'] as String ,
      storeName: map["storeName"] as String,      
      subContextUrl: map["subContextUrl"] as String,
      openingEvent: List<dynamic>.from(map["openingEvent"] as List<dynamic>),
      closingEvent: List<dynamic>.from(map["closingEvent"] as List<dynamic>),

    
    );
  }

  String toJson() => json.encode(toMap());

  factory StoreSTLModel.fromJson(String source) => StoreSTLModel.fromMap(json.decode(source) as Map<String, dynamic>);

}

the code of my request is as follow: (I’m using Dio package)

import 'package:.../app_constants.dart';
import 'package:dio/dio.dart';
import 'package:...stl/store_stl_model.dart';



class RemoteStoreSTLDataSource {
  static dynamic apiSTLData;

  static late final urlApiSTL = AppConstants.urlApiSTL;


  //get store from api STL (for now store id is hardcode)
  Future<StoreSTLModel> getStoreFromSTL() async{
    if(apiSTLData == null){
      apiSTLData = {};
      try{
        Response? response = await Dio().get(
          urlApiSTL,
          );
        apiSTLData = response.data;
        print('apiSTLData type response.data ${ apiSTLData.runtimeType}');
        //prints: apiSTLData type response.data _InternalLinkedHashMap<String, dynamic>
      }on Exception {
        null;
        print('apiSTLData Exception');
      }
    }
    print('apiSTLData type response.data[store] ${apiSTLData['store'].runtimeType}');
    //prints:  apiSTLData type response.data[store] _InternalLinkedHashMap<String, dynamic>
    return StoreSTLModel.fromJson(apiSTLData['store']); 
  }

}

when I try to run, I’m having the error:

Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String'

so I don’t understand why it is not being parsed. and I don’t understand why the response is of this type ‘_InternalLinkedHashMap<String, dynamic>’ I'm a beginner in Dart. Could you please help me to understand. Thanks in advance :)

{
    "store": {
        "storeId": "30264",
        "storeName": "xxxxx",
        "subContextUrl": "hxxxu-xxxxx",
        "type": "STORE",
        "address": {
            "label": null,
            "zipcode": "xxxx",
            "city": "xxxx",
            "countryCode": "xxxx",
            "lines": [
                "xxxxxxxx",
                ""
            ]
        },
        "openingEvent": [],
        "closingEvent": [],
        "dayHours": {
            "day": "THURSDAY",
            "morningOpeningHour": "08:30:00",
            "morningClosingHour": null,
            "afternoonOpeningHour": null,
            "afternoonClosingHour": "20:00:00"
        },
        "driveHours": {
            "timezone": "xxxxxx",
            "openHourList": [
                {
                    "day": "MONDAY",
                    "morningOpeningHour": "08:30:00",
                    "morningClosingHour": null,
                    "afternoonOpeningHour": null,
                    "afternoonClosingHour": "20:00:00"
                },
                {
                    "day": "SUNDAY",
                    "morningOpeningHour": null,
                    "morningClosingHour": null,
                    "afternoonOpeningHour": null,
                    "afternoonClosingHour": null
                }
            ]
        },
        "eservices": [
            {
                "website": "serviceWebsite - to be defined",
                "linkTitle": null,
                "linklabel": null,
                "serviceId": 2,
                "serviceName": "xxxxxx"
            },
            {
                "website": "serviceWebsite - to be defined",
                "linkTitle": null,
                "linklabel": null,
                "serviceId": 4,
                "serviceName": "xxxxxx"
            },
            {
                "website": "serviceWebsite - to be defined",
                "linkTitle": null,
                "linklabel": null,
                "serviceId": 39,
                "serviceName": "xxxxx"
            }
            
        ],
        "services": [
            "xxxxxx",
            "xxxxx",
            "xxxxxxx"
        ],
        "additionalStoreInfo": {
            "status": "xxxxx",
            "commercialSignLabel": "xxxxx"
        }
    }
}

0 Answers
Related