【问题标题】:Reading the Object data results in Undefined but key are read correctly读取对象数据导致未定义但正确读取键
【发布时间】:2020-10-22 18:38:55
【问题描述】:

我有一个具有以下格式值的对象:

    [
  {
    NameSpace: 'furuuqu',
    LocalName: 'uuurur',
    ExtensionVlaues: 0,
    FreeText: 'OEN',
    '$$hashKey': 'object:291'
  },
  {
    NameSpace: 'furuuqu',
    LocalName: 'uuurur',
    ExtensionVlaues: 1,
    FreeText: 'TWO',
    '$$hashKey': 'object:293'
  }
]

我想从中读取数据,因此我尝试使用 JSON.stringfy 将其转换为 JSON,对象将如下所示:

{"NameSpace":"furuuqu","LocalName":"uuurur","ExtensionVlaues":0,"FreeText":"OEN","$$hashKey":"object:291"}
{"NameSpace":"furuuqu","LocalName":"uuurur","ExtensionVlaues":1,"FreeText":"TWO","$$hashKey":"object:293"}

我尝试循环遍历它并获取元素,但它显示每个元素的关键是这样的:

Object.keys(extension).forEach(function(key) {
                  console.log(key, extension[key]);
                });

0 {
1 "
2 N
3 a
4 m
5 e

如果我不做JSON.stringify,那么undefined 中的结果会被正确读取。

for(var ex=0; ex<Extension.length; ex++)
{
    //var extension = JSON.stringify(Extension[ex]);
    
    Object.keys(Extension[ex]).forEach(function(key) {
      console.log(key, extension[key]);
    });
}

NameSpace undefined
LocalName undefined
ExtensionVlaues undefined
FreeText undefined
$$hashKey undefined
NameSpace undefined
LocalName undefined
ExtensionVlaues undefined
FreeText undefined
$$hashKey undefined

有人可以告诉我在这种情况下如何读取数据并显示。

【问题讨论】:

  • 你确定需要JSON.parse吗?我认为它只是一个对象,不再是 JSON。试试var extension = Query.Extension[ex]
  • 您正在使用的格式非常奇特。通常你会让数组和 JSON.stringify 整个事情,而不是数组中的每个单独的对象。
  • @slebetman 如果我不使用JSON.parse,那么我将获得所有属性的undefined。这是控制台示例:console.log(Query.Extension[ex]["NameSpace"]); 以及 console.log(Query.Extension[ex].NameSpace);
  • @GuyIncognito 我在 angularjs HTTP 请求中发送这样的数据:params: {input:$scope.formdata,Extension:$scope.ExtensionList} 。有没有更好的方法发送和读取数据,请给我一个例子。

标签: javascript json object stringify jsonparser


【解决方案1】:
const queryData = [].concat(Query.Extension);

使用queryData循环,则不用关心Query.Extension是不是数组

【讨论】:

  • 但这只会将元素推到数组右侧,我会再次从数组中读取相同的内容,所以我觉得这不会对我正在读取的数据产生任何改变。
  • Array.concat 接受单个元素或数组,并返回一个新数组,所以queryData 始终是一个数组。
猜你喜欢
  • 2022-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 2020-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多