Javascript 生成要用JSON.parse()解析的JSON字符串;

Javascript 生成要用JSON.parse()解析的JSON字符串;,javascript,json,parsing,Javascript,Json,Parsing,因此,我尝试创建一个JSON浏览器/编辑器。我能够将初始JSON解析为div,并按照我喜欢的方式对其进行格式化 这是我用来循环初始JSON的函数 \u迭代(\u选项卡,原始json){ var-tab=_-tab; tab++; for(原始json中的var key1){ var data_type=typeof raw_json[key1]; var d=String(原始json[key1]) if(d==字符串){ d=“字符串”; } 如果(d==数字){ d=“编号” } if(数据

因此,我尝试创建一个JSON浏览器/编辑器。我能够将初始JSON解析为div,并按照我喜欢的方式对其进行格式化

这是我用来循环初始JSON的函数

\u迭代(\u选项卡,原始json){
var-tab=_-tab;
tab++;
for(原始json中的var key1){
var data_type=typeof raw_json[key1];
var d=String(原始json[key1])
if(d==字符串){
d=“字符串”;
}
如果(d==数字){
d=“编号”
}
if(数据类型==“对象”| |数据类型==“数组”){
this.input.append(`${key1}':{
`) 这是。_迭代(制表符,原始json[key1]) }否则{ this.input.append(`${key1}':'',
`) } } this.input.append(`},
`) }
为了保存JSON,我将使用

getJSON(){
var json_text=this.input.text().slice(0,-1)
返回JSON.parse(`${JSON\u text}`)
}
现在,这可以通过
JSON.parse()进行解析console.log(getJSON()[0])
时,它返回
{


我是否没有正确格式化JSON。这方面的一个实例可以在中找到,首先,您的
控制台。log
结果没有意义。解析的JSON对象现在可以在JavaScript中使用,如果有(仅)属性
x
y
,在请求属性
0
时会导致
未定义的
。您对
控制台的调用似乎是对
getJSON()的不同(早期?)版本的调用
函数,其中返回原始字符串,在这种情况下,检索JSON文本的第一个字符是有意义的:
“{

但是,假设编写的
getJSON()
版本,它实际上会抛出一个解析异常:

VM1511:1 Uncaught SyntaxError: Unexpected token ' in JSON at position 1
查看您的站点,我可以在控制台中执行以下操作:

jsonString = $('json-editor').text()
// value: "{'partName' : '', 'partRevision' : '', ..."
这是非法的JSON。JSON在其第7页上为字符串(Unicode/ASCII 0x22)指定(仅)引号

'partName'
作为JavaScript字符串文本是合法的,这一事实与此无关,但可能令人困惑


作为一个次要的风格点,将
JSON.parse(`${JSON_text}`)
简化为
JSON.parse(JSON_text)

@BaseZen的回答非常有助于我理解我的代码出了什么问题。我的JSON格式不正确,即使在线linter说它是正确的。还有BaseZen指出的。
JSON.parse()
不适用于尾随逗号。若要解决此问题

\u删除尾随的逗号(json字符串){
var regex=/\,(?!\s*?[\{\[\“\'\w])/g;
返回json_string.replace(正则表达式“”);
}
我在某处找到了这个信息


因此,用户Dima Parzhitsky的回答也帮助我解决了这个问题。

也许首先做一个console.log(
“${json_text}”
),然后通过json linter在线运行…?我对我的网站做了一些更新,现在除了
)之外,它解析的内容要多得多
我猜是最后一个位置。我能做些什么来解决这个问题。感谢您的快速响应SO的格式意味着封装的单个问题。因此您必须隔离、详细描述问题并发布单独的问题。尽可能减少示例输入,但仍然失败。