【发布时间】:2021-05-02 03:55:26
【问题描述】:
我正在创建一个用于数据可视化的颤振应用程序。 将有 3 页:
- 过滤条件的过滤页面,
- 用于可视化搜索结果的列表页面,
- 详情页面。
我会收到这样的 json:
数据.json
[
{
"name": "Jhon",
"surname": "Walker",
"details": "{\"work\":{\"salary\":\"116\",\"company\":\"evolution\",\"image\":\"http://image.jpg\"},\"address\":{\"street\":\"grand station\",\"city\":\"salt lake\"}}"
},
{
"name": "Alan",
"surname": "Turing",
"details": "{\"work\":{\"salary\":\"116\",\"company\":\"evolution\",\"image\":\"http://image.jpg\"},\"address\":{\"street\":\"grand station\",\"city\":\"salt lake\"}}"
}
]
这可能是一个很长的列表。
我已经在这里发布了一个关于我的这个应用程序代码不起作用的问题,这里是讨论
所以现在我要问一个不同的问题。哪个是这个 json 结构的最佳模型? 我需要直接访问详细信息对象中的所有字段。我想有能力直接拿到外地工资或公司。 我需要访问图像字段,该字段将包含要在应用程序中显示的图像的 url。 在链接的帖子中,我使用序列化和built_value 生成了一个模型。 它在代码中不起作用,我仍然收到错误:
type String is not a subtype of type 'Map<String, dynamic>' in type cast
而且我在网上找到的任何解决方案似乎都不起作用。
我创建了另一个没有嵌套对象的模型,我是这样做的: 模型.dart
class User {
String name;
String surname;
String details;
User({
this.name,
this.surname,
this.details,
});
factory User.fromJson(Map<String, dynamic> json) => User(
name: json["name"],
surname: json["surname"],
details: json["details"],
);
Map<String, dynamic> toJson() => {
"name": name,
"surname": surname,
"details": details,
};
}
使用此模型,我可以在 ListView 上显示数据,但详细信息字段是唯一的大字符串,我不知道如何访问详细信息对象中的字段。 我只能想到正则表达式,但这听起来有点棘手,为什么我有 JSON 时应该使用正则表达式?
哪个模型最适合这个 json?我应该改变路径吗? 您对更好的数据模型有什么建议,或者从我链接的讨论中正确使用数据模型的解决方案? 我问的不是同一个问题,我只是想找到使用标准 json 访问 deatils 字段的正确解决方案。
谢谢!
【问题讨论】:
标签: android json flutter mobile data-modeling