Парс Джексон Стиль JSON в флаттер - PullRequest
0 голосов
/ 10 мая 2019

У меня есть ответ JSON. Этот ответ приходит с сервера, использующего Джексона для написания Java.

Ответ JSON содержит много вложенных объектов, массив и т. Д. Вы знаете, что если у JSON один и тот же объект, у первого объекта много вещей, у другого - просто идентификатор.

{ "json_id": "4eca9663-0522-4411-ba10-37b1028ac61a",

    "key": value,
    "key": value,
    "key": value,
    "key": value,
    "key": value,
    "key": value,
    "key": value,
    "city": {
        "json_id": "8b5e8a17-442f-478e-982f-ade06996d3cf",
         "name": "Ankara",  
    },
    {cities:[
        { // actually this city refer Ankara. this is Ankara json_id above
            "8b5e8a17-442f-478e-982f-ade06996d3cf"
        },
        {
            "json_id":feb538a8-31b3-49a5-a424-0bf46f429a0d,
            "name": "İstanbul"
        }
    ]}

Я пытаюсь разобрать его на Флаттере. Есть ли для этого какая-нибудь библиотека?

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Вот пример кода, показывающего, как анализировать ответ JSON и получать от него данные:

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:async';

void main() {
  runApp(new MaterialApp(
    home: new HomePage(),
  ));
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  List data;

  @override
  void initState() {
    super.initState();
    getJSONData(); //method
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: AppBar(title: Text("my JSON app")),
      body: new ListView.builder(
        itemCount: data == null ? 0 : data.length,
        itemBuilder: (BuildContext context, int index) {
          return new Container(
            child: new Center(
              child: new Column(
                crossAxisAlignment: CrossAxisAlignment.stretch,
                children: <Widget>[
                  new Card(
                    child: new Container(
                      child: new Text(data[index]['name'] ?? ''),
                      padding: EdgeInsets.all(20),
                    ),
                  )
                ],
              ),
            ),
          );
        },
      ),
    );
  }

  Future<String> getJSONData() async {
    var response = await http.get(
        Uri.encodeFull("https://jsonplaceholder.typicode.com/users"),
        headers: {"Accept": "application/json"});
    setState(() {
      var convertDataToJson = json.decode(response.body);
      data = convertDataToJson;
    });
  }
}

Вы можете адаптировать его к вашим потребностям.

0 голосов
/ 10 мая 2019

Ссылка - https://app.quicktype.io/

Приведенная выше ссылка может помочь вам разобрать ответ JSON во флаттере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...