如何从没有键的JSON对象获取值

时间:2017-04-24 19:45:30

标签: javascript json response key-value

我正在发出一个http请求,然后我从SQL表中获取值。

router.get('/', function(req, res, next) {
    controller.getAllPosts( function(err,posts){
        if(err){
            res.status(500);
            res.end();
        }else{           
            res.json(posts);
}

我得到的回答是这样的:

[
  {
    "id_post": 1,
    "description": "Hola",
    "username": "jumavipe",
    "image": "1.jpg"
  },
  {
    "id_post": 2,
    "description": "no se",
    "username": "jacksonjao",
    "image": "2.jpg"
  },
  {
    "id_post": 3,
    "description": "nuevo tatuaje de bla bla bla",
    "username": "jumavipe",
    "image": "3.jpg"
  }
]

我如何只获得第3篇中的描述

我无法做到:

var desc= posts[2].description

我在线查看,我尝试过这样的事情:

var description = posts.getJSONObject("LabelData").getString("description");

如果我的json数组没有密钥,我应该在getJSONObject()中作为参数使用什么。

我无法找到有用的东西。如何从json数组中的一个对象获取该值?

1 个答案:

答案 0 :(得分:1)

使用Array.prototype.find

如果您没有任何浏览器兼容性问题,可以使用Array.prototype.find

var posts = [
  {
    "id_post": 1,
    "description": "Hola",
    "username": "jumavipe",
    "image": "1.jpg"
  },
  {
    "id_post": 2,
    "description": "no se",
    "username": "jacksonjao",
    "image": "2.jpg"
  },
  {
    "id_post": 3,
    "description": "nuevo tatuaje de bla bla bla",
    "username": "jumavipe",
    "image": "3.jpg"
  }
];

var post = posts.find(function(item) {
  return item.id_post == 3;
});

console.log(post.description);

使用Array.prototype.filter

几乎在大多数浏览器中都支持

Array.prototype.filter,它会起作用。

var selected_posts = posts.filter(function(item) {
  return item.id_post == 3;
});

console.log(selected_posts[0].description);