从字符串中获取JavaScript对象
当有:从字符串中获取JavaScript对象,javascript,string,typescript,object,Javascript,String,Typescript,Object,当有: var text ='{"parameter":"value"}'; 我可以使用JSON.parse(文本);创建一个JavaScript对象 问题: 我有来自axios.default.post请求的{parameter:“value”}。parse为此抛出一个错误 那么,如何从中创建对象呢 ***编辑***** 响应来自axios请求。我现在通过transformResponse调试了它,在那个阶段,数据仍然是{“参数”:“值”}。因此,Axios通过删除“必须弄清楚,为什么”来制
var text ='{"parameter":"value"}';
我可以使用JSON.parse(文本);创建一个JavaScript对象
问题:
我有来自axios.default.post请求的{parameter:“value”}
。parse为此抛出一个错误
那么,如何从中创建对象呢
***编辑*****
响应来自axios请求。我现在通过transformResponse调试了它,在那个阶段,数据仍然是{“参数”:“值”}。因此,Axios通过删除“必须弄清楚,为什么”来制造我的问题 谢谢你的回答,我会让你不断更新。
{parameter:“value”}
不是JSON,因为键没有用引号括起来。有一个技巧可以用来将javascript对象字符串转换回对象
正如@ASDFGerte所指出的,如果您不确定字符串的来源,那么这不是一个安全的方法
函数解析(str){
返回函数(''use strict';返回('+str+'))();
}
const obj=parse(“{parameter:”value“}”);
console.log(obj);
我认为应该让api响应正确的json有效数据。我不建议前端处理这个无效的json字符串
更新: 根据您的问题,您是否尝试过此配置
// `transformResponse` allows changes to the response data to be made before
// it is passed to then/catch
transformResponse: [function (data) {
// Do whatever you want to transform the data
return data;
}],
希望此帮助问题在于Axios,当从服务器接收JSON时,Axios似乎将其格式化为不同的格式,即使在执行“typeof”时它仍然是一个字符串 我的解决方案是将responseType=“text”添加到请求的配置中。 这样,我收到一个文本,我可以用JSON.parse解析它
然而,这并不完美,因为Axios提供JSON格式化,因此,如果有人回答“我如何使用Axios格式化的结果?”,我很高兴知道这件事。你从哪里弄来的那根绳子?在我看来,这是一个问题,而不是如何将其转换为对象。你能告诉我是什么错误吗?这不是有效的JSON。所以JSON.parse不会有帮助。但是怎么了?你似乎已经有了目标。只要使用它,响应来自axios请求。我现在通过transformResponse调试了它,在那个阶段,数据仍然是{“参数”:“值”}。因此,Axios通过移除"; 我必须弄清楚,为什么。谢谢你的回答,我会让你不断更新。我建议不要在这里使用
eval
或函数
构造函数,特别是如果不能绝对确定字符串是否来自安全源。这是非常正确的。嗯,这不是我的API;)但请看下面的答案