如何从保存在数组某个位置的JSON行访问属性
How to access an attribute from a JSON line saved in a position from an array?
这可能是一个非常简单的问题,但我似乎真的无法解决。
我有几个JSON行和一个notes
数组。使用notes.push(JSONline)
,我假设每个数组位置保存一行JSON,因此采用以下方式:
//notes[1]
{"id":"26","valuee":"20","datee":"2016-04-05T15:15:45.184+0100","id2":51}
//notes[2]
{"id":"27","valuee":"134","datee":"2016-04-05T15:15:47.238+0100","id2":53}
//notes[3]
{"id":"26","valuee":"20","datee":"2016-04-05T15:15:45.184+0100","id2":52}
我的问题是:我想打印一个特定的属性,例如数组中一个特定JSON行的id。我该怎么做?
当我执行console.log(notes)
时,它会按预期打印所有JSON行。但如果我执行console.log(notes[1])
,它会在该位置打印JSON行的第一个字符,而不是整行。类似地,console.log(notes[1].id)
不会打印第一行JSON中的id,事实上它打印的是"undefined"。
我做错了什么?非常感谢。
我建议您在推送注释时解析所有json,比如:
notes.push(JSON.parse(JSONLine))
如果你在某种程度上倾向于在数组中使用json字符串而不是对象(我不建议这样做),那么一旦你有了jsonLine-id-,你就可以一直解析
JSON.parse(notes[id]).id
基本上,无论哪种解决方案,您都希望使用JSON.parse,我强烈建议您一开始就将它们转换为对象。
您需要记住JSON是JS对象的字符串表示。JS字符串具有与数组类似的索引访问器方法,这就是为什么您可以编写console.log(notes[0])
并返回第一个字母。
然而,JavaScript不允许您使用对象表示法访问字符串,因此console.log(notes[0].id)
将不起作用,这也是您获得undefined
的原因。
要使用此方法访问字符串中的数据,您需要首先将字符串解析为对象。
var notes = ['{"id":"26","valuee":"20","datee":"2016-04-05T15:15:45.184+0100","id2":51}'];
var note0 = JSON.parse(notes[0]);
var id = note0.id;
演示
这就留下了为什么要有一个JSON字符串数组的问题。虽然这并不奇怪或不同寻常,但它可能不是最理想的解决方案。相反,您可以构建一个对象数组,然后将整个数据结构字符串化,以保持其可管理性。
var obj0 = {
"id": "26",
"valuee": "20",
"datee": "2016-04-05T15:15:45.184+0100",
id2: 51
};
var obj1 = {
"id": "27",
"valuee": "134",
"datee": "2016-04-05T15:15:47.238+0100",
"id2": 53
}
var arr = [obj0, obj1];
var json = JSON.stringify(arr);
输出
[
{
"id": "26",
"valuee": "20",
"datee": "2016-04-05T15:15:45.184+0100",
"id2": 51
},
{
"id": "27",
"valuee": "134",
"datee": "2016-04-05T15:15:47.238+0100",
"id2": 53
}
]
然后,您可以将JSON解析回一个数组,并像以前一样访问它:
var notes = JSON.parse(json);
notes[0].id // 26
这是因为在键值对中有{"id": "value"...
作为字符串。"id"
是一个字符串,因此不能像属性一样引用它。1.使用
var notes = JSON.parse(notes);
正如the alpha的评论中所提到的或删除引号尝试
{id:"26", ...}
这就是notes[i].id
返回未定义的原因
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- JSON 中位置 4 处的意外令牌<
- JSON获取地理位置在HTML中未返回值
- 如何从保存在数组某个位置的JSON行访问属性
- 从javascript中的JSON获取位置
- 查询JSON文件以获取数组中的位置
- 更新标记位置 json Leaflet 和 WebGLEarth
- 合并位置并从 JSON 输出组合数据
- 网格堆栈.js从 JSON 获取位置
- FF 13,IE 9:JSON 字符串化/地理位置对象
- 地理位置始终显示莫斯科Javascript/JQuery/JSON(开放天气API)
- 在使用可排序排序期间/之后显示使用 JSON 创建的列表中的项目位置
- 如何将另一个 JSON 中的 JSON 对象移动到最后一个位置
- 如何在拖放后将 x 和 y 位置保存到 jSon 文件
- 在 JSON 文件中调用位置数据类型
- 如何在D3.js中添加到地理位置的链接(创建为json路径)
- 如何用JSON的返回填充FIXED表的特定位置
- AngularJS|基于地理位置(lat,long)对JSON进行排序
- 如何在AngularJS中保存对象的JSON索引位置,而不是对象本身
- 在angularjs中的特定位置删除并断开json中的数据