Javascript 生成要用JSON.parse()解析的JSON字符串;
因此,我尝试创建一个JSON浏览器/编辑器。我能够将初始JSON解析为div,并按照我喜欢的方式对其进行格式化 这是我用来循环初始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(数据
\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的格式意味着封装的单个问题。因此您必须隔离、详细描述问题并发布单独的问题。尽可能减少示例输入,但仍然失败。