Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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 这个JSON字符串有什么问题?_Javascript_Json - Fatal编程技术网

Javascript 这个JSON字符串有什么问题?

Javascript 这个JSON字符串有什么问题?,javascript,json,Javascript,Json,这是来自与表单一起提交的数据。我无法控制JSON的生成,因为它是使用JSON.stringify()完成的。在服务器上,我收到以下JSON字符串,我想使用JSON.parse()将其解析回Javascript对象 但是,“uploadedFilename”部分似乎有问题,JSON.parse()无法处理,但我不明白原因或原因: [ '{"originalFilename":"A.jpg","uploadedFilename":"A-15904372.jpg","size":9149216,"ty

这是来自与表单一起提交的数据。我无法控制JSON的生成,因为它是使用
JSON.stringify()
完成的。在服务器上,我收到以下JSON字符串,我想使用
JSON.parse()
将其解析回Javascript对象

但是,
“uploadedFilename”
部分似乎有问题,
JSON.parse()
无法处理,但我不明白原因或原因:

[
'{"originalFilename":"A.jpg","uploadedFilename":"A-15904372.jpg","size":9149216,"type":"image/jpeg","isUploading":false,"isUploaded":true,"uploadPromise":{},"uploadProgress":100,"invalidFileMessage":null}'
,
'{"originalFilename":"B.jpg","uploadedFilename":"B-972341252.jpg","size":9149216,"type":"image/jpeg","isUploading":false,"isUploaded":true,"uploadPromise":{},"uploadProgress":100,"invalidFileMessage":null}'
]
JSON.parse()
返回以下错误:

SyntaxError:JSON中位于位置0的意外标记u

因此,我将代码放入,错误显示:

第1行的分析错误:
['{“原始文件名”

-------^应为'STRING','NUMBER','NULL','TRUE','FALSE','{','[',']',得到'undefined'


您所显示的内容不是有效的JSON。(但它是有效的Javascript,我们可以利用它作为解决方法)。在任何情况下,对于JSON兼容性,单个勾号“
都是错误的。JSON字符串总是以双引号“
字符开头

如果假定这是两个对象的数组,则这是正确的:

[
{"originalFilename":"A.jpg","uploadedFilename":"A-15904372.jpg","size":9149216,"type":"image/jpeg","isUploading":false,"isUploaded":true,"uploadPromise":{},"uploadProgress":100,"invalidFileMessage":null}
,
{"originalFilename":"B.jpg","uploadedFilename":"B-972341252.jpg","size":9149216,"type":"image/jpeg","isUploading":false,"isUploaded":true,"uploadPromise":{},"uploadProgress":100,"invalidFileMessage":null}
]
如果目的是让它成为字符串数组而不是对象数组,那么这是正确的(转义实际引号

现在,您拥有的数据块可能不是有效的JSON,但它是有效的Javascript

所以你可以这样做:

eval("obj = " + response_string);
其中,
response\u string
是您在任务中的原始字符串。
然后,当该语句返回时,
obj
是您的数据。在本例中,它将是一个由两个字符串组成的数组。这两个字符串都是有效的json。然后,您可以
json.parse(obj[0])
json.parse(obj[1])
等等。

单引号不是有效的json…valid看起来更像……
[“{\”originalFilename\:\”A.jpg\"…
或者根本没有外部引号,这不是JSON的输出。stringify听起来可能是他自己搞糊涂了。尝试将粘贴stringify输出复制到数组变量声明中,然后复制到JSON中。解析他声明的变量。并且认为变量声明和JSON是一样的。JSON包含字符串not对象…它应该不带引号生成:尝试修复它bro,你应该包含2个对象的数组而不是2个字符串:)[{“originalFilename”:“A.jpg”,“uploadedFilename”:“A-15904372.jpg”,“size”:9149216,“type”:“image/jpeg”,“Isupload”:false,“Isupload”:true,“uploadPromise”:{},“uploadProgress”:100,“invalidFileMessage”:null}{“originalFilename”:“B.jpg”,“uploadedFilename”:“B-972341252.jpg”,“size”:9149216,“type”:“image/jpeg”,“isupload”:false,“isupload”:true,“uploadPromise”:{},“uploadProgress”:100,“invalidFileMessage”:null}]这回答了你的问题吗?这真的只是问“什么是json?”?"很明显,OP不理解JSON到底是什么。我不理解对这个答案的热爱和对我的否决票,即使我承认,从教学角度来说,selbie的解释更有用:不需要更改数组中的字符串;它们已经是有效的JSON字符串……所以selbie指出的不是真正的JSON字符串正确,即使是,它最终将引导OP了解问题better@user120242-设身处地为OP着想。一个答案基本上是“单引号是错误的”没有任何额外的指导。另一个答案从两个不同的角度解释了正确数据的结构,并建议如果OP无法控制他收到的信息,他可以为OP解决问题。你会选择哪一个?你的答案不一定是错的,只是没有多大帮助。解释和建议总是更贴切这不是教科书上的事实。那不是我的。我也会投票否决这一点。我的只是一个正确的解决方法,没有详细的解释。我所做的只是通过一个简单的可运行代码和一个地图理解来显示他的字符串是有效的JSON,这就是他应该如何处理它,所以他可以很容易地看到他的Javascript变量声明不是JSON。我要指出的是,我觉得你的声明不完全准确,我会投反对票,因为他的两个字符串都是有效的JSON,但你只是说它不是有效的JSON,应该纠正一下,指出这一点。*这并不是说我不同意你所说的。我甚至不打算这么做“回答”或提供实际的解决方案。只是一个可运行的例子,指出了“这正按预期工作”的问题。我完全希望弹出一个解释更好的答案(如您的),尽管我希望它更准确地“正确”"我认为这也是不言而喻的,OP应该向提供这些数据的服务开发者施压,让他将这些数据编码为有效的json。你会惊讶地发现,有多少聪明的工程师不费心使用正确的格式库,而是试图编造他们自己的快速而肮脏的编码器——这些编码器在特殊字符方面往往存在缺陷转义码、转义序列、unicode等。。。
eval("obj = " + response_string);