如何在 dart/flutter 中解码复杂的 json?
Posted
技术标签:
【中文标题】如何在 dart/flutter 中解码复杂的 json?【英文标题】:how to decode complex json in dart/flutter? 【发布时间】:2021-12-28 12:06:07 【问题描述】:在我向服务器发出请求后,我得到了这个 json:
[
"id": 56012,
"name": "The name",
"description": "<p>description</p>\n",
"regular_price": "45000",
"sale_price": "45000",
"tags": [],
"images": [
"id": 56043,
"src": "pic link",
],
,
]
我想将它们解码并显示在我的屏幕上
所以我的班级模型是:
class ProductModel
late int _id;
late String _name;
late String _regular_price;
late String _description;
late var _image;
ProductModel(this._id, this._name, this._regular_price, this._description,
this._image);
get image => _image;
set image(value)
_image = value;
String get regular_price => _regular_price;
set regular_price(String value)
_regular_price = value;
String get description => _description;
set description(String value)
_description = value;
String get name => _name;
set name(String value)
_name = value;
int get id => _id;
set id(int value)
_id = value;
现在我已经像这样解码了这个 json:
var bodybytedecoded= jsonDecode(utf8.decode(response.bodyBytes));
var productItem = ProductModel(bodybytedecoded["id"], bodybytedecoded["name"], bodybytedecoded["regular_price"],bodybytedecoded["description"],bodybytedecoded["image"]["src"]);
我可以访问 id、name、description,但我不能在图像数组中使用 src,并且它不会加载到我的屏幕上。
有什么解决办法吗?
【问题讨论】:
【参考方案1】:bodybytedecoded["image"][0]["id"] //for id
bodybytedecoded["image"][0]["src"] // 用于 src
//只是打印数据到控制台
print("$bodybytedecoded["image"][0]["id"]");
//你得到了 56043,
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:试试这个
bodybytedecoded["image"][0]["src"] // here you change the index of image
【讨论】:
【参考方案3】:改变
bodybytedecoded["image"]["src"]
到
bodybytedecoded["images"][0]["src"]
【讨论】:
以上是关于如何在 dart/flutter 中解码复杂的 json?的主要内容,如果未能解决你的问题,请参考以下文章
flutter - 如何在 dart/flutter 中收听流值
如何在 dart/flutter 中声明 64bit unsigned int?
如何在 Dart / Flutter 中使用另一个文件的函数?
如何在 Dart/Flutter 中读取本地图像文件的字节数?