【发布时间】:2018-07-14 10:08:58
【问题描述】:
我目前正在使用字符串形式的有效负载,我正在解析使用JSON.parse(payload)。我的问题是,一旦我转换了有效负载,我需要在新创建的 JSON 对象中访问至少 5 个属性,并且它是非常嵌套的。我目前的实现是:
....then(payload => {
return ({
obj1: JSON.parse(payload).field.obj1
obj2: JSON.parse(payload).field.obj2
obj3: JSON.parse(payload).field.obj3
obj4: JSON.parse(payload).field.obj4
obj5: JSON.parse(payload).field.obj5
});
})
我觉得这是很多重复,并且觉得这种方式在可读性方面会更好(即使这样也不是那么干净):
....then(payload => {
let jsonObj = JSON.parse(payload)
return ({
obj1: jsonObj.field.obj1
obj2: jsonObj.field.obj2
obj3: jsonObj.field.obj3
obj4: jsonObj.field.obj4
obj5: jsonObj.field.obj5
});
})
谁能建议在可读性和性能方面执行此操作的最佳方法?
注意:这是在 promise.all() 中使用的,因此上面将迭代 X 个承诺。
【问题讨论】:
-
首先,您应该只需要解析一次 JSON,然后您需要考虑填充模型客户端。从您希望拥有的内容开始,然后从服务器发回,或从响应映射到您希望拥有的内容。
-
你的第二种方法没关系,你不需要做任何进一步的事情。
-
jsonObj.field是否包含任何其他属性? -
是的。 @Bergi
-
我猜这会变成One-liner to take some properties from object in ES6的副本。 (你应该只打电话给
JSON.parse一次希望是显而易见的)
标签: javascript json promise es6-promise