我做了很多研究,但我对我发现的东西并不完全满意.只是为了确定这是我的问题:什么是将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类实例的最佳和最易维护的解决方案是什么?我非常具体地问,因为我知道很容易反序列化为纯数据对象.我想知道是否可以使用工作方法获取类实例,而无需进行任何手动解析或任何手动数据复制.如果无法实现全自动化解决方案,那么下一个最佳解决方案是什么?
我目前正在阅读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实际上是异步吗?
我正在使用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数据肯定有一个属性,但它仍然会抛出错误,我不能用这个错误构建.
任何帮助是极大的赞赏.
我有一个json对象,我打印到屏幕上(使用alert() - 函数):
alert(object);
Run Code Online (Sandbox Code Playgroud)
结果如下:
然后我想将id的值打印到屏幕:
alert(object["id"]);
Run Code Online (Sandbox Code Playgroud)
结果是这样的:
如您所见,键"id"的值不是(!!!)undefined.
这到底是怎么回事?!
此方法将从 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]);被调用时,阵列仍然是空的。它尚未被填充。这只是我的猜测。
我该如何解决这个问题?有没有办法在填充数组之前创建延迟?
我从 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 ×4
json ×3
object ×2
typescript ×2
angular ×1
api ×1
arrays ×1
asynchronous ×1
axios ×1
observable ×1
properties ×1
undefined ×1