【发布时间】:2020-06-02 05:01:39
【问题描述】:
下面的代码对node.js服务器进行了一次rest调用,它返回一个包含一系列值的json,这些值必须通过在一个Cantiere中转换值来插入到一个列表中 类型的对象。我该怎么做呢? 我想要做的是将每一个 json 转换成一个构造类型的对象,然后将它们插入到一个列表中。
JSON 调用颤振:
static Future<List> Ricerca(Utente u, int IdCantiere, String NomeCantiere,
String RagioneSociale, bool isUtente) async {
var ret;
Map map = {
'IdUtente': u.GetIdUtente(),
'IdCantiere': IdCantiere,
'NomeCantiere': "a",
'RagioneSociale': RagioneSociale,
'CheckBoxCantieriCreatiDaUtenteLoggato': isUtente
};
String value = await apiRequest("/cantieri/ricerca", map);
//The ret variable holds the json, what I want to do is create a list of Cantiere type objects.
ret = json.decode(value);
return (ret as Iterable<dynamic> ?? const <dynamic>[])
.map((dynamic jsonObject) => Cantiere(
new Cliente(
jsonObject["IdCliente"] as int,
jsonObject["RagioneSociale"] as String,
jsonObject["Filiale"] as String,),
jsonObject["IdCantiere"] as int,
jsonObject["NomeCantiere"] as String,
jsonObject["DescrizioneEstesa"] as String,
jsonObject["Tipologia"] as String,
jsonObject["Stato"] as String,
jsonObject["StatoFatturazione"] as String,
jsonObject["DataCreazione"] as String,
))
.toList();
}
Cantiere.dart 和 Cliente.dart
class Cliente {
int _IdCliente;
String _RagioneSociale;
String _Filiale;
Cliente(this._IdCliente, this._RagioneSociale, this._Filiale);
String GetRagioneSociale() {
return this._RagioneSociale;
}
}
//Classe che rappresenta il cantiere
class Cantiere {
String _NomeCantiere,
_Tipologia,
_Stato,
_StatoFatturazione,
_DescrizioneEstesa,
_DataCreazione;
int _IdCantiere;
Cliente _c;
Cantiere(
this._c,
this._IdCantiere,
this._NomeCantiere,
this._DescrizioneEstesa,
this._Tipologia,
this._Stato,
this._StatoFatturazione,
this._DataCreazione);
}
JSON 示例:
[
{
"IdCantiere": 4,
"IdCliente": 40,
"Filiale": "SEDE",
"RagioneSociale": "Ca asas",
"NomeCantiere": "sala dd",
"DataCreazioneCantiere": "2017-08-04T18:20:31.333Z",
"Tipologia": "Consuntivo",
"StatoCantiere": "Chiuso",
"StatoFatturazione": 1,
"DescrizioneEstesa": "asasas"
},
"IdCantiere": 5,
"IdCliente": 40,
"Filiale": "SEDE",
"RagioneSociale": "Ca asas",
"NomeCantiere": "sala dd",
"DataCreazioneCantiere": "2017-08-04T18:20:31.333Z",
"Tipologia": "Consuntivo",
"StatoCantiere": "Chiuso",
"StatoFatturazione": 1,
"DescrizioneEstesa": "asasas"
}
]
【问题讨论】: