【问题标题】:How to parse JSON without key in flutter如何在没有密钥的情况下解析 JSON
【发布时间】:2019-11-16 22:01:29
【问题描述】:

我想解析一个 JSON。但是这个 JSON 没有键值。是唯一的价值。

我尝试创建类但不工作。错误是“列表”类型不是“地图”类型的子类型。

我试图解析它们在 json 中占据的位置(例如:json [0] ....)但我不确定。

提前致谢

json:

[["P170","P171","L-18"],["P171","L806","L-18"],["L806","L807","L-18"],["L807","L120","L-18"],["L120","L121","L-18"],["L121","L122","L-18"]]

班级列表:

import 'NodoPOJO.dart';
class NodoCollection{
  final List<NodoPOJO> list;

  NodoCollection(this.list);

  factory NodoCollection.fromJson(Map<String, dynamic> json) {
    return NodoCollection(
        List.from(json[0]).map((object) =>NodoPOJO.fromJson(object)));
  }


}

类 POJO:

class NodoPOJO{
  final String extremo1;
  final String extremo2;
  final String linea;

  NodoPOJO(this.extremo1, this.extremo2, this.linea);


  factory NodoPOJO.fromJson(Map<String, dynamic> json) {
    return NodoPOJO(json[0], json[1],json[2]);
  }

}

【问题讨论】:

标签: json flutter dart


【解决方案1】:

json.decode() 返回一个dynamic,因为 json 的每个元素都可以是一个对象(成为 Dart Map)或数组(成为 Dart List)。 json decode 在开始解码之前不知道会返回什么。

重写你的两个类如下:

class NodoCollection {
  final List<NodoPOJO> list;

  NodoCollection(this.list);

  factory NodoCollection.fromJson(List<dynamic> json) =>
      NodoCollection(json.map((e) => NodoPOJO.fromJson(e)).toList());
}

class NodoPOJO {
  final String extremo1;
  final String extremo2;
  final String linea;

  NodoPOJO(this.extremo1, this.extremo2, this.linea);

  factory NodoPOJO.fromJson(List<dynamic> json) =>
      NodoPOJO(json[0], json[1], json[2]);
}

【讨论】:

  • 非常感谢您的解决方案很有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 2021-05-13
  • 2018-06-02
相关资源
最近更新 更多