Javascript JSON解析对象,一个对象属性未定义,没有抛出错误

Javascript JSON parse object, one object property undefined, throwing no errors

本文关键字:错误 出错 未定义 一个对象 JSON 对象 Javascript 属性      更新时间:2023-09-26

我有一个极其独特的问题;在PHP通过xmlhttprequest传递JSON字符串后,我将其解析回一个对象数组。我的web应用程序使用几个不同的sqlsrv_query的结果重复执行此操作,但有一个查询变得非常有问题:id值不一致。我的意思是,如果我在解析之前输出JSON字符串,那么id值是int,但在JSON解析之后,它是未定义的。其余的值都很好,只是id(这是唯一的int)。此外,在解析之后,如果我将对象转换回JSON字符串,则会恢复int值。如果我试图像这样调用属性"object.prop",它将返回undefined。我检查了一遍又一遍,没有错别字。我已经console.log了整个对象数组(在整个执行过程中的不同点),并得到了相同的结果。我在SO、谷歌或这里找不到任何可以解释这种行为的东西,是吗?

以下是一些代码片段。

xmlhttprequest回调函数内部:

var result1 = decodeURIComponent(xmlhttp.responseText);
console.log(result1); <-- * SEE OUTPUT BELOW *
if(result1.search('<br') === -1) {
    this.result = JSON.parse(result1);
} else {
    console.log(result1);
}
output:  [{"sheet_id":4054,"o_number":1,"o_description"...

解析后,对象被传递给另一个对象:

if(!result) {
    //var error = new ErrorLog();
} else {
    console.log(result); <-- * SEE OUTPUT BELOW *
output: [Object, Object, Object, Object, Object]
          0: Object
             prop1: someValue
             prop2: someOtherValue
             ...
             sheet_id: undefined

为了阻止巨魔,让我重申我测试这种场景的程度:

Chrome和IE11也产生了相同的结果。我尝试过对多个不同的记录执行相同的查询,但同样的事情发生了。返回int和字符串混合的大量其他查询(不同的查询)没有这个问题。我试着关闭浏览器并重新打开,以防出现某种奇怪的临时异常。

我以前从未在这里发帖,因为我几乎总是通过一些研究找到问题的答案,但这超出了我的能力范围,所以我向so的好人寻求帮助,任何解决方案、见解或在哪里寻找答案的想法都将不胜感激。

它是一个有效的json格式。尝试使用JSON.parse() 进行解析

if(result1.search('<br') === -1) {
      this.result = JSON.parse(result1);
} else {
     console.log(JSON.parse(result1));
}
相关文章: