Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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 如何解析和连接特定于whit的分隔符_Javascript_Node.js_Axios - Fatal编程技术网

Javascript 如何解析和连接特定于whit的分隔符

Javascript 如何解析和连接特定于whit的分隔符,javascript,node.js,axios,Javascript,Node.js,Axios,我的问题是,我必须在“product_link_href”之后连接所有文本:在一个庞大的系列中(有200多个这样的内容,所以我无法发布整个内容),比如: 它来自一个api,在windows power shell中是白色的,名称是response.data,我使用的是axios;我认为这个东西对机器来说只是纯文本,因为在我选择它之前它是绿色的,带有数据;但我仍然需要“product_link_href”之后的所有文本:以文本格式连接,并由“,”sepsarated 我使用的代码是 axios.g

我的问题是,我必须在“product_link_href”之后连接所有文本:在一个庞大的系列中(有200多个这样的内容,所以我无法发布整个内容),比如:

它来自一个api,在windows power shell中是白色的,名称是response.data,我使用的是axios;我认为这个东西对机器来说只是纯文本,因为在我选择它之前它是绿色的,带有数据;但我仍然需要“product_link_href”之后的所有文本:以文本格式连接,并由“,”sepsarated

我使用的代码是

axios.get('https://randomapi/' + id + '/json?api_token=examplenotrealapitoken').then(response => {
                console.log(response.data);
            });

我尝试了JSON.parse和stringify,但没有任何效果。

服务器的响应是stringized JSON对象,这些对象已与行返回字符“\n”连接起来

它不是JSON可解析的,因为它不是一个数组,它必须是一个数组才能成为有效的JSON

我采取的方法是将其强制为“字符串化JSON对象数组”。由于每个对象都很浅,因此没有嵌套,因此
}
字符无疑是字符串化对象的结尾

您可以调用
massiveJSONishString.split('}')
,得到一个JSON字符串化对象数组,每个对象都缺少尾随
}

然后映射到该数组,并为每个元素添加我们丢弃的尾部
}
,以数组化它,然后
JSON.parse()
该字符串,生成一个JSON对象数组

这是您要查找的代码:

const textArray = res.data.split("}");

const jsonArray = textArray.map(element => {
  try {
    return JSON.parse(`${element}}`);
  } catch (e) {
    return {
      product_link_href: "MALFORMED JSON"
    };
  }
});
// console.log(jsonArray);
const product_link_hrefs = jsonArray.map(obj => obj.product_link_href);
const list = product_link_hrefs.join(", ");

console.log(list);

console.log(`You're welcome!`);

将整个数据放在粘贴箱中并链接它。它是字符串化的JSON。你需要对它进行JSON解析,然后可能映射到它上面-但是我需要查看数据结构,以知道如何准确地遍历它。好的,我会尝试在JSON中执行so158/5000。如果一个键名重复,只有最后一次出现计数,其他的只是中间值,它们会被它们的值覆盖next@MisterJojo奥巴马的评论已经足够了。下面是您要查找的代码。如果需要进一步的mods,请告诉我,如果我遇到了错误:const声明编辑中缺少初始值设定项已解决,现在我得到了错误:缺少)参数列表后,当我注释掉响应中格式错误的JSON行时,这段代码对我有效。好的,不,我错了,它工作得很好,我没有语言来表达我的感激;我真的认为像你这样的人是让stack overflow社区成为一个美丽的地方的原因Josh-你能添加一段介绍性的段落来解释为什么这样做有效吗?这可能会使它对未来的读者更有用。完成!谢谢你的提示。
const textArray = res.data.split("}");

const jsonArray = textArray.map(element => {
  try {
    return JSON.parse(`${element}}`);
  } catch (e) {
    return {
      product_link_href: "MALFORMED JSON"
    };
  }
});
// console.log(jsonArray);
const product_link_hrefs = jsonArray.map(obj => obj.product_link_href);
const list = product_link_hrefs.join(", ");

console.log(list);

console.log(`You're welcome!`);