这里是我转换json响应的地方,我只想获取一些响应并在我的应用程序上显示,
Future <List<PNLDATA>>_getPNLCONTENT() async {
var biller = "PNLpre";
var idPel = ContentPNLController.text;
var params = ContentPNLNumController.text.replaceAll(".", "");
var data = await ContentPre(Bill, ID, prm);
var jsonData = json.decode(data);
var jsonProduk = jsonData["VALUE"];
List< PNLDATA > pnldata = [];
for (var data in jsonProduk) {
pnldata.add(
new PNLDATA(
data['dt_name'], data['dt_trs'], data['dt_GTag'], data['dt_GAd'], data["dt_Gsum"])
);
}
print(pnldata);
return pnldata;
}
错误消息
[VERBOSE-2:ui_dart_state.cc(199)] Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Iterable<dynamic>'
Json回应:
flutter: {
"RC": "00",
"CMD": "PNLContent",
"VALUE": {
"dt_status": "SUCCESS",
"dt_name": "Caramel",
"dt_trs": "0000000001",
"dt_GTag": "00002",
"dt_GAd": "Macchiato",
"dt_Gsum": "22500",
"dt_Urs" : "22212",
},
}
PNLDATA类
class PNLDATA {
final String dt_name;
final String dt_trs;
final String dt_GTag;
final String dt_GAd;
final String dt_Gsum;
PNLDATA(this. dt_name, this. dt_trs, this.dt_GTag,this.dt_dt_GAd,this.dt_Gsum);
}
发生错误是因为您的jsonProduk
类型为Map
。这意味着你不能使用for循环。由于您的回复来自类型Map
,您必须将方法更改为以下内容。
Future<PNLDATA> _getPNLCONTENT() async {
var biller = "PNLpre";
var idPel = ContentPNLController.text;
var params = ContentPNLNumController.text.replaceAll(".", "");
var data = await ContentPre(Bill, ID, prm);
var jsonData = json.decode(data);
var jsonProduk = jsonData["VALUE"];
final PNLDATA pnldata = PNLDATA(
data['dt_name'],
data['dt_trs'],
data['dt_GTag'],
data['dt_GAd'],
data["dt_Gsum"],
);
print(pnldata);
return pnldata;
}
我看到一些错误。首先,您将在jsonProduk
处获得一个Map
值并对其进行迭代。您需要遍历列表
。
如果您想返回一个值,因为json将始终包含1个值,您可以尝试以下代码:
Future<PNLDATA> _getPNLCONTENT() async {
var biller = "PNLpre";
var idPel = ContentPNLController.text;
var params = ContentPNLNumController.text.replaceAll(".", "");
var data = await ContentPre(Bill, ID, prm);
var jsonData = json.decode(data);
var jsonProduk = jsonData["VALUE"];
final PNLDATA pnldata =
new PNLDATA(
jsonData['dt_name'] as String,
jsonData['dt_trs'] as String,
jsonData['dt_GTag'] as String,
jsonData['dt_GAd'] as String,
jsonData["dt_Gsum"] as String);
// I think this map requires explicit casting. You can check to see if it doesn't work without the casting
print(pnldata);
return pnldata;
}
如果您想返回一个列表,您可能应该使用列表结构保存一个json。大概是这样的:
{
"RC": "00",
"CMD": "PNLContent",
"VALUES": [
{
"dt_status": "SUCCESS",
"dt_name": "Caramel",
"dt_trs": "0000000001",
"dt_GTag": "00002",
"dt_GAd": "Macchiato",
"dt_Gsum": "22500",
"dt_Urs": "22212",
}
],
};
这样,您可以尝试实现类似于此的代码。
Future<List<PNLDATA>>_getPNLCONTENT() async {
var biller = "PNLpre";
var idPel = ContentPNLController.text;
var params = ContentPNLNumController.text.replaceAll(".", "");
var data = await ContentPre(Bill, ID, prm);
var jsonData = json.decode(data);
var jsonProduk = jsonData["VALUES"];
List<PNLDATA> pnldata = [];
for (var data in jsonProduk) {
pnldata.add(
new PNLDATA(
data['dt_name'] as String, data['dt_trs'] as String, data['dt_GTag'] as String, data['dt_GAd'] as String, data["dt_Gsum"] as String)
);
}
print(pnldata);
return pnldata;
}
虽然这个问题已经被问了几次,但我没有从我看到的那些人那里得到帮助。所以就这样, 我有一个模拟json文件在我的资产文件夹: 这是: 这里是: 如您所见,我希望在页面加载后立即获取数据,并将所述数据保存在列表中,然后可以在中使用。但每次加载屏幕时,我都会出现以下错误: 我接着看了一些教程,完全忽略了与我不想要的模型相关的任何东西。我错过了什么?我需要做什么才能在一个列表中得到结果,然后在网格视图中使
我收到了错误消息: 被精确定位的线在这里: 返回类型为
我正在尝试从服务器获取json数据
我想显示fetchdata函数中的数据 但它显示了这个错误: 但是当我硬编码时,它工作正常: postman中作为JSON的API输出: 模拟器功能: 超文本传输协议有什么问题吗?因为API工作正常。
如何修复未经处理的异常问题:键入“\u InternalLinkedHashMap” 这是我的班级。省道锉 还有我的主菜。省道锉
我正在构建一个颤振应用程序,我必须解析api中的一些数据,我设置了所有内容,但我收到了这个错误,我不知道为什么,我是颤振新手,任何帮助都将不胜感激。谢谢。 生成的错误 这是我的api响应示例 这就是我处理数据的方式 这是模型课