相关疑难解决方法(0)

JSON到TypeScript类的实例?

我做了很多研究,但我对我发现的东西并不完全满意.只是为了确定这是我的问题:什么是将JSON反序列化为TypeScript运行时类实例的最强大,最优雅的自动化解决方案?

说我上了这堂课:

class Foo {
  name: string;
  GetName(): string { return this.name };
}
Run Code Online (Sandbox Code Playgroud)

并说我有这个JSON字符串用于反序列化:

{"name": "John Doe"}
Run Code Online (Sandbox Code Playgroud)

获取名称设置为"John Doe"和GetName()方法的Foo类实例的最佳和最易维护的解决方案是什么?我非常具体地问,因为我知道很容易反序列化为纯数据对象.我想知道是否可以使用工作方法获取类实例,而无需进行任何手动解析或任何手动数据复制.如果无法实现全自动化解决方案,那么下一个最佳解决方案是什么?

json deserialization typescript

90
推荐指数
3
解决办法
8万
查看次数

console.log()异步还是同步?

我目前正在阅读Trevor Burnham的Async Javascript.到目前为止,这是一本很棒的书.

他谈到这个片段和console.log在Safari和Chrome控制台中是"异步"的.不幸的是我不能复制这个.这是代码:

var obj = {}; 
console.log(obj); 
obj.foo = 'bar';
// my outcome: Object{}; 'bar';
// The book outcome: {foo:bar};
Run Code Online (Sandbox Code Playgroud)

如果这是异步,我会预期结果将成为书籍的结果.console.log()被放入事件队列中,直到执行完所有代码,然后运行它并具有bar属性.

虽然它正在同步运行但它似乎出现了.

我运行此代码错了吗?console.log实际上是异步吗?

javascript asynchronous

72
推荐指数
1
解决办法
3万
查看次数

'响应'类型中不存在属性'_body'

我正在使用Angular 2并在使用observable时出现此错误Property '_body' does not exist on type 'Response'.代码如下

this.securitiesService.getMarketMovers()
    .subscribe(data => {
        console.log(JSON.parse(data._body))
    });
Run Code Online (Sandbox Code Playgroud)

getMarketMovers函数就是这样的:

getMarketMovers() {
    return this._http.get('...url address...')
}
Run Code Online (Sandbox Code Playgroud)

我试图设置data类型,any但这对我不起作用.代码工作,_body数据肯定有一个属性,但它仍然会抛出错误,我不能用这个错误构建.

任何帮助是极大的赞赏.

observable typescript angular

27
推荐指数
2
解决办法
3万
查看次数

javascript说JSON对象属性是未定义的,尽管它不是

我有一个json对象,我打印到屏幕上(使用alert() - 函数):

alert(object);
Run Code Online (Sandbox Code Playgroud)

结果如下:

在此输入图像描述

然后我想将id的值打印到屏幕:

    alert(object["id"]); 
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

在此输入图像描述

如您所见,键"id"的值不是(!!!)undefined.

这到底是怎么回事?!

javascript json properties object undefined

6
推荐指数
2
解决办法
2万
查看次数

即使它存在,我也无法访问数组内的对象

此方法将从 firebase 数据库检索到的 JSON 对象存储到数组分数。

function loadScoresToArray(){
    databaseRef.orderByChild("Score").on("child_added", function (snap) {
        scores.push(snap.val());
    });
}
Run Code Online (Sandbox Code Playgroud)

运行上面的方法并打印分数的内容

loadScoresToArray();
console.log(scores);

console.log(scores[0]);
Run Code Online (Sandbox Code Playgroud)

输出

在此处输入图片说明

如此处所见,对象已正确添加到分数中。

但我无法使用索引检索它们。

阅读像类似的问题这个我想这可能是因为当console.log(scores[0]);被调用时,阵列仍然是空的。它尚未被填充。这只是我的猜测。

我该如何解决这个问题?有没有办法在填充数组之前创建延迟?

javascript json javascript-objects

5
推荐指数
1
解决办法
2843
查看次数

对象键“未定义”

我从 API 获取一个对象,并在其中使用其他 API 响应创建新对象,例如:

API响应1:Obj: {a: 1, b: 2}

API响应2:3

创建对象:Obj.c = 3

最终结果: 对象:{a: 1, b: 2, c: 3}

问题:

console.log(Obj) return Obj: {a: 1, b: 2, c: 3}

console.log(Obj.c) return undefined
Run Code Online (Sandbox Code Playgroud)

console.log当我尝试在属性中给出 a之后时,我没有得到.map,我无法访问创建的属性,返回undefined。但是,当我console.log在任何对象上给出 a 时,创建的属性就在那里。

我的代码:

async getGeneralInfo(token, seed) {
    try {
        API_HEADER.headers.Authorization = token;
        let responseAvaliableCoins = await axios.get(
            BASE_URL + "/coin",
            API_HEADER
        );

        let avaliableCoins = responseAvaliableCoins.data.data.coins;

        avaliableCoins.map(async (coin, index) => {
            if (coin.status …
Run Code Online (Sandbox Code Playgroud)

javascript arrays api object axios

5
推荐指数
1
解决办法
2万
查看次数