gpt4 book ai didi

javascript - 将 JSON 对象映射到 TypeScript 对象

转载 作者:搜寻专家 更新时间:2023-10-30 21:31:23 24 4
gpt4 key购买 nike

我正在使用 AJAX JQuery 从服务器返回一个对象数组,一个例子

[{"Name":"Name1","ResultSet":[{"Id": 1,"Name":"Name1"}, {"Id": 2,"Name":"Name2"}]},{"Name": "Name11", "ResultSet": [{"Id": 11, "Name": "Name11"}, {"Id": 22, "Name": "Name22"}]}]

此外,我还有以下要映射的 TypeScript 对象

interface IResult {
name: string;
resultSet: any;
}

export class Result implements IResult {
constructor(public name: string, public resultSet: any) { }
}

我处理结果的方式,

dataService.execute(function (results) {
$(results).each(function (index, element) {
console.log(element.Name);
$.each(element.ResultSet, function (key, value) {
$.each(value, function (key, value) {
console.log(key + ' - ' + value);
});
});
});
});

在 VS 2013 中,编译器提示:

The property 'Name' does not exist on value of type 'Element'.

有没有办法将返回的对象集合映射到 TS 结果对象数组?

谢谢

更新我最终循环如下:

var result = <Array<IResult>>results;

$.each(result, function (index, item) {
// item is Result instance
// item.name
console.log(item.name);

// item.resulSet
$.each(item.resultSet, function (key, val) {
// val is single Object (one result)
$.each(val, function (k, v) {
// k,v => key/value for each property on result
console.log(k + ' - ' + v);
});
});

});

最佳答案

在 IResult 的接口(interface)定义中,属性是小写的,但您尝试使用大写访问它们。由于您的 JSON 具有大写字母,因此将 IResult 更改为:

interface IResult {
Name: string;
ResultSet: any;
}

关于javascript - 将 JSON 对象映射到 TypeScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25822397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com