Sulav Parajuli
Sulav Parajuli

Reputation: 213

Getting specific item from json response without any serilization in flutter?

I am using blogger api and in my app I just want to get the "content" value nothing more nothing less. How can I do that without serilizations?

This is the json response:

{
  "kind": "blogger#postList",
  "items": [
    {
      "content": {
          "name": "Tesula Parajuli",
          "address":"Biratnagar",
          "type": "Kabita",
          "text":"Ajai ma rati\\nk ssss sapana ma\\nmai mari gayeko\\nmai mari gayeko.",
          "fb_link":"https://www.facebook.com/Sulav2059",
          "photo":"https://scontent.fktm1-1.fna.fbcdn.net/v/t1.0-1/c17.0.240.240a/p240x240/133496545_687004428585872_4614063345221687073_o.jpg?_nc_cat=107&ccb=2&_nc_sid=7206a8&_nc_ohc=o-ZPIXOH3B0AX8RT6fj&_nc_ht=scontent.fktm1-1.fna&tp=27&oh=c90b454649168f6d0b91454d5c7155b9&oe=60130954",
      },
      "etag": "\"dGltZXN0YW1wOiAxNjA5NTcyNzExMjA1Cm9mZnNldDogLTI4ODAwMDAwCg\""
    },
    {
      "content": {
          "name":"Sulav Parajuli",
          "address":"Biratnagar",
          "type": "Kabita",
          "text":"Ajai ma rati\\nk dekhe sapana ma\\nmai mari gayeko\\nmai mari gayeko.",
          "fb_link":"https://www.facebook.com/Sulav2059\",\n\"photo\":\"https://scontent.fktm1-1.fna.fbcdn.net/v/t1.0-1/c17.0.240.240a/p240x240/133496545_687004428585872_4614063345221687073_o.jpg?_nc_cat=107&ccb=2&_nc_sid=7206a8&_nc_ohc=o-ZPIXOH3B0AX8RT6fj&_nc_ht=scontent.fktm1-1.fna&tp=27&oh=c90b454649168f6d0b91454d5c7155b9&oe=60130954",
      },
      "etag": "\"dGltZXN0YW1wOiAxNjA5NTcyNjgxOTY2Cm9mZnNldDogLTI4ODAwMDAwCg\""
    }
  ],
  "etag": "\"MjAyMS0wMS0wMlQwNzozMTo1MS4yMDVa\""
}

The code for getting data:

Future<http.Response> readDataFromDb() async {
  var url = 'url-text';


  return http.get(
    url,
    headers: <String, String>{
      'Content-Type': 'application/json; charset=UTF-8',
    },
  );
}

And I am doing this on initState:

 readDataFromDb().then((value){
      setState(() {
        values = value.body;
      });
    });

Now what I want is list of the contents saved in something like List which I can iterate through to create listview.

Upvotes: 0

Views: 49

Answers (1)

dm_tr
dm_tr

Reputation: 4773

Try this. But next time, make some efforts

class _SamplePageState extends State<SamplePage> {
  List contents;

  @override
  void initState() {
    super.initState();

    // Initialize your variable
    contents = [];

    initData();
  }

  void initData() {
    readDataFromDb().then((response) {
      var res = jsonDecode(response.body);
      if (mounted) setState(() {
        for (var item in res["items"]) contents.add(item["content"]);
      });
    }).catchError((_) {});
  }

  Future<http.Response> readDataFromDb() async {
    var url = 'url-text';

    return await http.get(url, headers: <String, String>{
      'Content-Type': 'application/json; charset=UTF-8',
    },);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: ListView.builder(
        itemCount: contents.length,
        itemBuilder: (context, index) {
          return ListTile(
            title: Text("Name : " + contents[index]["name"]),
          );
        },
      ),
    );
  }
}

Upvotes: 1

Related Questions