我有这个对象:
var a = {
"1":{"topicId":1,
"subTopicId":1,
"topicName":"x",
"subTopicName":"x"},
"2":{"topicId":1,
"subTopicId":2,
"topicName":"x",
"subTopicName":"x"},
"62":{"topicId":10,
"subTopicId":62,
"topicName":"x",
"subTopicName":"x"}
}
我意识到我可以这样定义内部对象:
interface IData {
topicId: number;
subTopicId: number;
topicName: string;
subTopicName; string;
}
但是,有没有一种方法可以定义可以具有任意数量的IData对象的整个对象?
解决方法:
如果JSON包含“ stringId”(例如“ 1”,“ 2”)作为标识符,我们可以将该对象定义为字典(请参见here):
interface IData
{
topicId: number;
subTopicId: number;
topicName: string;
subTopicName; string;
}
// IDictionary with a key of type string
// and a value of type IData
interface IDataSet
{
[key: string] : IData;
}
var source =
'{ "1":{"topicId":1, "subTopicId":1, "topicName":"x","subTopicName":"x"},'+
' "2":{"topicId":1, "subTopicId":2, "topicName":"x","subTopicName":"x"},'+
' "62":{"topicId":10,"subTopicId":62,"topicName":"x","subTopicName":"x"}'+
'}';
var a = <IDataSet>JSON.parse(source);
for(var key in a)
{
var elm = document.createElement('div');
elm.innerText = "key: " + key + ", topicId: " + a[key].topicId
document.body.appendChild(elm);
}
选中此code here(单击运行以查看结果)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。