由于开始和结束时的双引号,将字符串转换为对象会出错

Convert String to Object gives error due to double quotes at start and end

我有一个来自第三方的对象 api。它的形式如下:

"{ "type": "object", "properties": {   "hostUrl": {
    "type": "string",
    "description": "hostUrl",   }, }, }"

由于开头和结尾的双引号,我遇到了错误,json parse 也没有被删除,所以请告诉我如何删除这个将我的对象包裹在其中的双引号

一个 JSON 字符串化的对象应该总是包含用单引号括起来的对象 '。你的'包含在双引号 ".

由于您收到的 JSON 响应格式不可接受,因此您无法直接解析并在响应的第一个和最后一个中添加单引号 ' 以使其有效。 也就是说,
如果您得到的回复是
"{ "type": "object", "properties": { "hostUrl": { "type": "string", "description": "hostUrl" } } }"
添加单引号使其成为
'"{ "type": "object", "properties": { "hostUrl": { "type": "string", "description": "hostUrl" } } }"'

因为现在你的对象是一个有效的字符串,使用 substring 方法并删除错误放置的双引号以获得有效的 JSON 字符串化值。

代码如下:

let obj = '"{ "type": "object", "properties": {"hostUrl": { "type": "string", "description": "hostUrl" } }}"';
obj = obj.substring(1, obj.length-1);
console.log(JSON.parse(obj));

试试这个

const jsonStr =
  '"{ "type": "object", "properties": {  "hostUrl": { "type": "string", "description": "hostUrl",   }, }, }"';

var json = jsonStr
  .substring(1, jsonStr.length - 1)
  .replaceAll("},", "}")
  .replaceAll(" ", "")
  .replaceAll(",}", "}");

json

{
  "type": "object",
  "properties": {
    "hostUrl": {
      "type": "string",
      "description": "hostUrl"
    }
  }
}