首页 > 解决方案 > 为什么这个 JSON 对象返回反斜杠?我该如何摆脱它们?

问题描述

为什么这个 JSON 对象返回反斜杠?

https://api.etherscan.io/api?module=contract&action=getabi&address=0xf7F14205898b2b8bC008148E591B1060BE7a50Fb&apikey=DFMRS7RGGBAZW3ZDKEQTRVMBCA87JVSQVT

我该如何摆脱它们?此外,如何摆脱标题状态代码?

我创建了一个 javascript 获取对象,它获取 URL 并对其进行解析,然后将响应中的对象作为字符串返回,但这在当前上下文中不可用。

JSON 对象返回这样的 {"status":"1","message":"OK","result":"[{\"constant\":true,\"inputs\":[],\"name\":\"findPercentage\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}]

但我需要它没有标题并返回一个换行符......

        "constant": true,
        "inputs": [],
        "name": "name",
        "outputs": [
            {
                "name": "",
                "type": "string"
            }
        ],

标签: javascriptjson

解决方案


响应是一个 JSON 字符串,解析时包含 3 个属性:消息、状态和结果。该结果属性的值是另一个JSON 字符串,因此您还需要对其进行解析,并且您将拥有一个格式良好的对象来使用:

fetch('https://api.etherscan.io/api?module=contract&action=getabi&address=0xf7F14205898b2b8bC008148E591B1060BE7a50Fb&apikey=DFMRS7RGGBAZW3ZDKEQTRVMBCA87JVSQVT')
  .then(res => res.json())
  .then((responseObj) => {
    const trueObj = JSON.parse(responseObj.result);
    console.log(trueObj);
  });

请记住,没有“JSON 对象”之类的东西。如果你有一个对象或数组,那么你就有一个对象或数组,句号。JSON 格式是一种在字符串中表示对象的方法,例如const myJSON = '{"foo":"bar"}'.


推荐阅读