Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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对象_Javascript_String_Typescript_Object - Fatal编程技术网

从字符串中获取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;)但请看下面的答案