Home > OS >  How to access JSON via field?
How to access JSON via field?

Time:01-11

I have a JSON

jsonData

{
    "data": {
      "splashPage": {
        "title": "Splash"
      },
      "homePage": {
        "title": "Home"
      }
    }
}
List<String> accessField = ['data','splashPage']; 
final out = accessField.map((e) => "['$e']").join();
Map jsonMapData = jsonDecode(jsonData); 
Map<String, dynamic> splashPageJson = '${jsonMapData}$out' as Map<String, dynamic>; 
print(splashPageJson);

I got an error can't access to splashPage.

_CastError (type 'String' is not a subtype of type 'Map<String, dynamic>' in type cast)

How can I access to splashPage from JSON?

CodePudding user response:

Is this what you want?

var jsonData = {
    "data": {
      "splashPage": {
        "title": "Splash"
      },
      "homePage": {
        "title": "Home"
      }
    }
}

Map jsonMapData = jsonDecode(jsonData); 

List<String> accessField = ['data','splashPage'];

Map<String, dynamic> requiredResult = jsonMapData[accessField[0]][accessField[1]];

CodePudding user response:

Here's the solution:

First import:

import 'dart:convert';

To store JSON into the map:

final Map<String, dynamic> map = json.decode('{"data":{"splashPage":{"title":"Splash"},"homePage":{"title":"Home"}}}');

To print your requirement:

print(map["data"]["splashPage"]["title"]);
  • Related