как получить значение Json?

#javascript #arrays #json #object

#javascript #массивы #json #объект

Вопрос:

Я хочу получить ключ и значение из данных JSON, как показано ниже.

 {
  "data": {
    "listCard": {
      "cards": [
        {
          "id": "2",
          "title": "벗꽃볼사람",
          "content": "하이",
          "createdAt": "2019-04-17T16:06:31.962772 00:00",
          "creator": {
            "id": "2",
            "name": "운영자"
          }
        },
        {
          "id": "1",
          "title": "벗꽃볼사람",
          "content": "하이",
          "createdAt": "2019-04-17T16:06:14.789277 00:00",
          "creator": {
            "id": "2",
            "name": "운영자"
          }
        }
      ]
    }
  }
}
 

я использую console.log(data.listCard)
это показано ниже

 {cards: Array(2), __typename: "ListCardResponse"}
cards: Array(2)
0: {id: "2", createdAt: "2019-04-17T16:06:31.962772 00:00", updatedAt: "2019-04-17T16:06:31.962820 00:00", title: "벗꽃볼사람", content: "하이", …}
1: {id: "1", createdAt: "2019-04-17T16:06:14.789277 00:00", updatedAt: "2019-04-17T16:06:14.789315 00:00", title: "벗꽃볼사람", content: "하이", …}
length: 2
__proto__: Array(0)
__typename: "ListCardResponse"
__proto__: Object
 

но я использую console.log(data.listCard.cards)
он показывает карты, а не определяет.

наконец, я хочу использовать data.listCard.cards.map. не могли бы вы мне помочь?

Комментарии:

1. Похоже, у вас есть объект JavaScript, а не JSON.

2. взяв предоставленную вами информацию и запустив ее в консоли javascript, она работает просто отлично. var d = ...; console.log(d.data.listCard.cards); Поэтому я думаю, что нам нужно больше информации. Не могли бы вы дать нам более подробную информацию о некоторых особенностях, связанных с кодом?

3. Видишь jsfiddle.net/bham7k84 — с этим нет никаких проблем console.log(data.listCard.cards) . Вы уверены, что это те же самые данные, которые приводят к ошибке?

4. «я хочу использовать data.listCard.cards.map» … cards — это массив и не имеет никакого свойства с именем «map». И ни один из объектов внутри него. Вы говорите о функции .map() ? Если да, конечно, мы могли бы помочь вам использовать его, но сначала вам придется объяснить, чего вы хотите достичь, используя его.

Ответ №1:

Во-первых, это не JSON — это обычный объект JavaScript. Во-вторых, использование object.data.listCard.cards работает отлично:

 const object = {
  "data": {
    "listCard": {
      "cards": [{
          "id": "2",
          "title": "벗꽃볼사람",
          "content": "하이",
          "createdAt": "2019-04-17T16:06:31.962772 00:00",
          "creator": {
            "id": "2",
            "name": "운영자"
          }
        },
        {
          "id": "1",
          "title": "벗꽃볼사람",
          "content": "하이",
          "createdAt": "2019-04-17T16:06:14.789277 00:00",
          "creator": {
            "id": "2",
            "name": "운영자"
          }
        }
      ]
    }
  }
};

console.log(object.data.listCard.cards); 
 .as-console-wrapper { max-height: 100% !important; top: auto; } 

Ответ №2:

Поскольку вы хотели использовать .map() . Мы перебираем d.data.listCard.cards . Но вы можете рассмотреть возможность использования forEach .

Документация: Карта

Получить доступ к объекту data.listCard.cards.map или data['listCard']['cards'] . Используя обозначение в виде скобок или точек.

Документация: Средства доступа к свойствам

 let d = {
    "data": {
        "listCard": {
            "cards": [
                {
                    "id": "2",
                    "title": "벗꽃볼사람",
                    "content": "하이",
                    "createdAt": "2019-04-17T16:06:31.962772 00:00",
                    "creator": {
                        "id": "2",
                        "name": "운영자"
                    }
                },
                {
                    "id": "1",
                    "title": "벗꽃볼사람",
                    "content": "하이",
                    "createdAt": "2019-04-17T16:06:14.789277 00:00",
                    "creator": {
                        "id": "2",
                        "name": "운영자"
                    }
                }
            ]
        }
    }
}
// Map
// Or d['data']['listCard']['cards']
d.data.listCard.cards.map(v => {
    console.log(v)
});
// forEach
// Or d.data['listCard']['cards']
d.data.listCard.cards.forEach(v => {
    console.log(v)
}); 

Я использую map , когда мне нужно вернуть новый массив или объект.

 // Map Returns Array
let data = d.data.listCard.cards.map(v => v);
console.log(data);