我正在尝试将外键数据从JSON提要中展平为一个类。我将该字段添加到fromJson工厂方法中,并且它不会在浏览器控制台(Dartium)上出错。当我显示它时,该字段是空白的,所以看起来它没有通过,这并不奇怪。我在网上找不到该方法的任何文档。这是我的JSON数据:
{
"id": 386,
"artist_id": 57,
"label_id": 5,
"style_id": 61,
"title": "A Flower is a Lovesome Thing",
"catalog": "OJCCD-235",
"alternate_catalog": null,
"recording_date": "1957-04-01",
"notes": null,
"penguin": "**(*)",
"category": "jazz",
"label": {
"label_name": "Fantasy"
}
},
这是方法:
factory Record.fromJson(Map<String, dynamic> record) =>
new Record(_toInt(record['id']),
record['title'],
record['catalog'],
record['artist_id'],
record['label_id'],
record['style_id'],
record['alternate_catalog'],
DateTime.parse(record['recording_date']),
record['notes'],
record['penguin'],
record['category'],
record['label_name']
);
这是调用:
HttpRequest response = await HttpRequest.request(
url, requestHeaders: headers);
List data = JSON.decode(response.responseText);
final records = data
.map((value) => new Record.fromJson(value))
.toList();
return records;
我还在from Json方法中尝试过label:label_name。是否可以继续使用fromJson来实例化对象?是否有任何可以从Json解释的文档?我找到了一些,但几乎没有说什么。我也在研究在Rails序列化程序中展平它,或者作为在数据库中创建视图的最后手段。正如您可能注意到的那样,我还有两个其他的外键要处理。
Günter的答案修复了客户端的问题。如果任何一个阅读更喜欢,还有一个Rails解决方案。它需要Active Model Seriializer。这里是相关部分:
class RecordSerializer < ActiveModel::Serializer
attributes :id, :artist_id, :label_id, :style_id, :title, :catalog, :alternate_catalog,
:recording_date, :notes, :penguin, :category, :label_name
def label_name
object.label.name
end
end
指令object.label.name从标签表中检索名称值。这是结果JSON:
{
"id": 386,
"artist_id": 57,
"label_id": 5,
"style_id": 61,
"title": "A Flower is a Lovesome Thing",
"catalog": "OJCCD-235",
"alternate_catalog": null,
"recording_date": "1957-04-01",
"notes": null,
"penguin": "**(*)",
"category": "jazz",
"label_name": "Fantasy"
},
答案 0 :(得分:1)
我不完全确定我理解这个问题,但我想这就是您正在寻找的问题
record['label']['label_name']