Javascript 将字符串转换为有效的json

Javascript 将字符串转换为有效的json,javascript,node.js,json,string,Javascript,Node.js,Json,String,我需要使用node.js从javascript文件中提取一个对象。我能够读取javascript文件,也能够分割需要转换为对象的字符串。这是我的密码 const AboutLocale = function() { return { person: { name: "zxczv", age: 25, gender: "male", }, ar: true, }; }; 我只需要这个文件中的person对象,我可以使用slice

我需要使用node.js从javascript文件中提取一个对象。我能够读取javascript文件,也能够分割需要转换为对象的字符串。这是我的密码

const AboutLocale = function() {
  return {
    person: {
      name: "zxczv",
      age: 25,
      gender: "male",
    },
    ar: true,
  };
};
我只需要这个文件中的person对象,我可以使用slice操作符来实现这一点。现在它给了我一个像这样的字符串

  "{
    name: "man",
    age: 25,
    gender: "male",
  }"

我试图解析它,但它不是有效的JSON。我需要帮助将其转换为有效对象。

您可以使用一点正则表达式来完成此操作。第一个属性将所有属性名称替换为它们自己,但被引用。第二个删除右括号前的任何逗号。请注意,这是一个非常脆弱的解决方案,如果您抛出任何意外的东西,它可能会崩溃。最好只运行文件,运行AboutLocale命令,然后将输出字符串化为有效的JSON

const输入=`{
名字:“男人”,
年龄:25岁,
性别:“男性”,
}`
const input2=`{header:“Aboutjdkahsfjk34”,productShortName:“OBDX123456”,version:“version”,servicePack:“Service Pack”,poweredByValue:“asag”,版权:“版权所有2006-2020”,build:“build”,name:“manav”}`
const input3=`{header:“Aboutjdka,hsfjk34”,productShortName:“obdx123456”,version:“version”,servicePack:“Service Pack”,poweredByValue:“asag”,版权:“版权所有2006-2020”,build:“build”,name:“manav”}`
fixed=input.replace(/\b(.*):/g,“\”$1\:”)。replace(/,.\n.}/gm,“}”)
fixed2=input2.replace(/([,{])(.*?):/g,“$1\”$2\”:”)
让fixed3=“”
设inAProperty=false
input3.split(“”).forEach((e,i)=>{
如果(e==“{”)已修复3+=“{”
如果(e==“:”)已修复3+=“\”:”,则为else
如果(e==“,”)fixed3+=inAProperty?e:“,\”
如果(e==“\”),则为else{
inAProperty=!inAProperty
固定值3+=e
}else fixed3+=e
})
console.log(已修复)
log(JSON.parse(已修复))
console.log(已修复2)
console.log(JSON.parse(fixed2))
console.log(fixed3)

log(JSON.parse(fixed3))
JSON.stringify
?我尝试了JSON.stringify,但没有返回理想的结果。那是什么?你能给我们看一下,并将其与stringify输出进行比较吗?它在使用stringify的代码中抛出了一个错误。但是我可以使用提供的regex来修复这个问题。谢谢,这对我来说很有效。我对这个文件的要求仍然是unchanged。嘿,如果我从字符串中删除空格和换行符,则此正则表达式不起作用。您能帮我更新正则表达式吗。您好。请尝试从第二个正则表达式中删除
\n
。我尝试了第二个正则表达式,但它不起作用。可能是第一个正则表达式需要一些更改。请给出您现在使用的输入示例。