Синтаксический анализ вложенного json с помощью javascript

#javascript #json #nested-json

Вопрос:

У меня есть немного JSON.

 {
  ZVH2: {
    username: 'ZVH2',
    ping: 0,
    uuid: '3a4423c3-dce1-40c1-8333-ab2ffdfcd005',
    displayName: ChatMessage {
      json: [Object],
      text: '',
      extra: [Array],
      bold: undefined,
      italic: undefined,
      underlined: undefined,
      strikethrough: undefined,
      obfuscated: undefined,
      color: undefined
    },
    entity: Entity {
      _events: [Object: null prototype] {},
      _eventsCount: 0,
      _maxListeners: undefined,
      id: 367,
      type: 'player',
      position: [Vec3],
      velocity: [Vec3],
      yaw: 3.141592653589793,
      pitch: 0,
      onGround: false,
      height: 1.62,
      width: 0,
      effects: [Object],
      equipment: [Array],
      heldItem: [Item],
      isValid: true,
      metadata: [Array],
      username: 'ZVH2',
      name: 'player',
      timeSinceOnGround: 0,
      attributes: [Object],
      isInWater: false,
      isInLava: false,
      isInWeb: undefined,
      isCollidedHorizontally: false,
      isCollidedVertically: false,
      [Symbol(kCapture)]: false
    },
    gamemode: 2
  },
  Maximo237354: {
    username: 'Maximo237354',
    ping: 161,
    uuid: 'd6d1bcda-d3c0-406b-b91e-beb3f7be9f5f',
    displayName: ChatMessage {
      json: [Object],
      text: '',
      extra: [Array],
      bold: undefined,
      italic: undefined,
      underlined: undefined,
      strikethrough: undefined,
      obfuscated: undefined,
      color: undefined
    },
    entity: Entity {
      _events: [Object: null prototype] {},
      _eventsCount: 0,
      _maxListeners: undefined,
      id: 72,
      type: 'player',
      position: [Vec3],
      velocity: [Vec3],
      yaw: 2.773437264497239,
      pitch: -0.04908738521234035,
      onGround: true,
      height: 1.62,
      width: 0.6,
      effects: [Object],
      equipment: [Array],
      heldItem: [Item],
      isValid: true,
      metadata: [Array],
      name: 'player',
      username: 'Maximo237354',
      uuid: 'd6d1bcda-d3c0-406b-b91e-beb3f7be9f5f',
      dataBlobs: undefined,
      attributes: [Object],
      headYaw: 2.773437264497239,
      [Symbol(kCapture)]: false
    }
  }
}
 

Я хочу использовать javascript для печати имени пользователя username здесь. Он может либо перебирать каждую вещь и выводить значение username, либо просто принимать первое значение, потому что это тоже имя пользователя. Я нигде не могу найти хороший учебник по этому вопросу в Интернете. Я хочу убедиться, что я печатаю каждое имя пользователя, а не сущность. Может кто-нибудь, пожалуйста, помочь с этим?

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

1. Если вам нужно извлечь ключи объекта, попробуйте Object.keys(yourDataset) Посмотреть Документы

2. «У меня есть немного JSON» … нет, у вас нет. Это объект JavaScript

Ответ №1:

Предполагая, что ваша переменная JSON вызвана data , вы можете извлечь ключи с помощью Object.keys(data)

Чтобы выполнить итерацию и получить имена пользователей, вы можете сделать

 Object.keys(data).forEach(key => {
   let username = data[key].username;
});
 

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

1. Ключи уже являются именами пользователей

2. Мне интересно, почему бы вам просто не преобразовать это обратно в объект JavaScript, а затем получить его таким образом, а не разбирать строку. Вся цель JSON заключается в том, что он представляет объект JavaScript.