Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中只解析JSON API的一部分_Javascript_Json_Api_Fetch - Fatal编程技术网

在JavaScript中只解析JSON API的一部分

在JavaScript中只解析JSON API的一部分,javascript,json,api,fetch,Javascript,Json,Api,Fetch,我正在尝试获取一个API,它有数百个变量中我需要的两个。如何获取这两个变量并将它们分配给函数中的变量 async function getTwoVariables() { const response = await fetch('https://genericAPI.com').then(res => res.json()); const end = response.endAt; const beg = response.startAt; console.log(end

我正在尝试获取一个API,它有数百个变量中我需要的两个。如何获取这两个变量并将它们分配给函数中的变量

async function getTwoVariables() {
  const response = await fetch('https://genericAPI.com').then(res => res.json());
  const end = response.endAt;
  const beg = response.startAt;
  console.log(end, beg);
  // or some other stuff
}
当我这样做的时候

 fetch( " https://genericAPI.com" )
.then( response => response.json() )
.then( json => console.log( json ) );
日志中充满了我提到的所有这些变量,但我不知道如何将我需要的2个变量挑出并分配给其他变量。我在java中通过执行以下操作实现了这一点

    JSONObject myResponse = new JSONObject(response.toString());

    String end = myResponse.getString("endAt");
    String beg = myResponse.getString("startAt");
我一直在到处寻找如何做到这一点的指南,但我认为我使用了不正确的术语,所以我找不到答案


这是返回的部分内容,endAt是我特别想要抓住的一个

{“endAt”:“1533797999000”,
“交换数据”:“1534748399000”,
“enableFlag”:正确,
“publicEndAt”:“1533949199000”,
“分销起点”:“1533848400000”,
“事件ID”:14,
“rankingRewards”:。。。
)  

您走的是正确的道路

fetch( " https://genericAPI.com" )
.then( response => response.json() )
.then( json => {
    let end = json.endAt
    let beg = json.startAt
});

也许您正在寻找一个异步函数

async function getTwoVariables() {
  const response = await fetch('https://genericAPI.com').then(res => res.json());
  const end = response.endAt;
  const beg = response.startAt;
  console.log(end, beg);
  // or some other stuff
}

这是返回的部分内容,endAt是我特别想要抓取的一个
{“endAt”:“153379799900”,“exchangeEndAt”:“1534748399000”,“enableFlag”:true,“publicEndAt”:“1533949199000”,“DistributionStart”:“1533848400000”,“eventId”:14,“rankingRewards”:
结果是,你不想只解析JSON的一部分——你解析全部,然后像访问常规javascript对象一样访问属性——因为一旦解析JSON,你会得到一个确实有效的常规javascript对象,但看起来end和beg没有被赋值,我得到一个
Uncaught ReferenceError:end在控制台中调用end或beg时未定义为:1:1
错误。我从变量中删除了
let
,它现在可以工作了。这就是我所需要的吗?如果您处理了使用
let
关键字定义的let-werevariable的范围为cur的字段,let就可以工作了rent块。这意味着如果您尝试在当前
然后
回调块之外访问
end
beg
,它将抛出一个未定义的错误。解决此问题的一个方法是在then块之外声明
end
beg