如何在 fetch.response.json() 中使用 reviver 函数

all*_*'OM 6 javascript reviver-function fetch-api

JSON.parse附带了一个“reviver”函数(例如:“JSON.parse using reviver function”)。

如何在response.json 中使用这个“复活者” ?例如:

fetch(url)
.then(a => a.json({reviver}))    // unfortunately not working
.then(...)
Run Code Online (Sandbox Code Playgroud)

我有一个解决方法:

fetch(url)
.then(a => a.text())
.then(b => new Promise((resolve) => resolve(JSON.parse(b, reviver))))
.then()
Run Code Online (Sandbox Code Playgroud)

但它多用了一步,这似乎没用。有什么更好的主意吗?

Emi*_*ary 10

您的解决方法基本上是最好的选择,但如上所述,额外的承诺是不必要的。

fetch(url)
    .then(response => response.text())
    .then(text => JSON.parse(text, reviver))
    // ...
Run Code Online (Sandbox Code Playgroud)


Jan*_*nus -5

你可以这样做:

fetch(url)
.then((response) => {return response.json()})
.then((json) => {console.log(json)});
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你 ;)

  • 问题询问如何使用_reviver_,[`JSON.parse()`的可选第二个参数](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/ parse#using_the_reviver_parameter),当使用 `response.json()` 时。使用 `response.json()` **不会工作**,因为它不接受 reviver 参数。 (2认同)