如何在没有关键的情况下解析JSON

时间:2019-07-06 19:37:57

标签: json flutter dart

我想解析一个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]);
  }

}

1 个答案:

答案 0 :(得分:1)

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

如下重写您的两个类:

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]);
}