Получить первый уровень подсчета длины объекта из JSON в js

В настоящее время у меня есть строковый объект JSON, который выглядит следующим образом: (Важно, это объект, который я должен преобразовать в строку, и ПОСЛЕ того, как мне нужен подсчет длины)

Я делаю вызов базы данных, которая возвращает result. Я думаю обернуть мой результат так: var myData = JSON.stringify(result);

Это производит следующее, намного больше:

myData =   {
    "0":[{"id": 50, "product_id": 'blah blah', etc}, {"id": 52, "product_id": 'blah blah', etc}, {"id": 50, "product_id": 'blah blah', etc}],
    "1":[{"id": 50, "product_id": 'blah blah', etc}, {"id": 52, "product_id": 'blah blah', etc}, {"id": 50, "product_id": 'blah blah', etc}],
    "2":[{"id": 50, "product_id": 'blah blah', etc}, {"id": 52, "product_id": 'blah blah', etc}, {"id": 50, "product_id": 'blah blah', etc}]
}

Я пробовал все, что мог придумать, чтобы получить длину корневого уровня. В этом примере их будет 3. Мне нужно знать длину, чтобы я мог запустить цикл, выбирая каждый из них.

Как я могу это сделать?

Я пытался для (var data in myData) и я пытался Object.keys(myData).length.

Я вошел в консоль Ojbect.keys(myData).length, и результат 9234.

Ничто из того, что я пробовал, не работает.

Извините, что исправил, так оно и есть на самом деле, мой плохой @NickParsons

FabricioG 02.03.2019 02:26

Я не вижу никакого JSON в этом вопросе. "не работает" - это не описание проблемы. Опубликуйте минимальный воспроизводимый пример.

melpomene 02.03.2019 02:26

Обе вещи, которые, как вы говорите, вы пробовали, должны работать для подсчета ключей, поэтому, пожалуйста, покажите, как вы их пробовали.

Ry- 02.03.2019 02:27

@melpomene он специально сказал после, что он вызывает stringify, что, я полагаю, означает JSON.stringify

Matthew Herbst 02.03.2019 02:27

@FabricioG, ты не можешь использовать реверс, JSON.parse, а затем использовать Object.keys().length?

Matthew Herbst 02.03.2019 02:28

@MatthewHerbst Как знание длины поможет в цикле по строке JSON?

melpomene 02.03.2019 02:29
Object.keys(myData).length возвращает 3. Если myData является строковым JSON, тогда JSON.parse.
Andre Figueiredo 02.03.2019 02:29

@melpomene вопрос, который он задает: как мне рассчитать, сколько значений находится в корневом ключе в строковом объекте JSON?

Matthew Herbst 02.03.2019 02:30

@MatthewHerbst Вопрос, который я задаю: как это будет полезно для циклического прохождения строкового объекта?

melpomene 02.03.2019 02:31

Я не пробовал JSON.parse, позвольте мне попробовать @MatthewHerbst

FabricioG 02.03.2019 02:31

@melpomene почему это важно? Почему кто-то хочет что-то сделать, не влияет на правильность вопроса или нет.

Matthew Herbst 02.03.2019 02:31

Мне нужно найти счетчик, потому что он собирается запустить другой скрипт на основе «группы». В частности, json отправляется в программу под названием Illustrator, которой для запуска нужны данные в виде строки json, тогда мне нужно подсчитать группу, чтобы создать артборд для каждого из них. @МэттьюХербст

FabricioG 02.03.2019 02:32

@FabricioG да, это решит вашу проблему: const length = Object.keys(JSON.parse(jsonData)).length где jsonData — это значение, возвращаемое вам сервером.

Matthew Herbst 02.03.2019 02:32

Просто не вызывайте JSON.stringify в первую очередь (точнее, вызывайте JSON.stringify только в конце, когда вам нужна строка; выполняйте всю свою основную работу над реальным объектом).

melpomene 02.03.2019 02:33

Это должна быть строка... Поток от js к jsx, и для этого требуется строка json. Это CEP -> JSX Adobe, рабочий процесс @melpomene

FabricioG 02.03.2019 02:34

@melpomene, вы предполагаете, что у него есть доступ к объекту JSON в его контексте.

Andre Figueiredo 02.03.2019 02:36

@MatthewHerbst отлично сработал, СПАСИБО!

FabricioG 02.03.2019 02:37

сначала сделайте => jsonlint.com ваш json недействителен.

Mister Jojo 02.03.2019 02:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
18
1 108
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Object.keys(myData).length) работает отлично

    var myData = {
      "0": [
        { "id": 50, "product_id": "blah blah",  "etc" : 44 },
        { "id": 52, "product_id": "blah blah", "etc" : 44  },
        { "id": 50, "product_id": "blah blah", "etc" : 44  }
      ],
      "1": [
        { "id": 50, "product_id": "blah blah",  "etc" : 44 },
        { "id": 52, "product_id": "blah blah", "etc" : 44  },
        { "id": 50, "product_id": "blah blah", "etc" : 44  }
      ],
      "2": [
        { "id": 50, "product_id": "blah blah",  "etc" : 44 },
        { "id": 52, "product_id": "blah blah", "etc" : 44  },
        { "id": 50, "product_id": "blah blah", "etc" : 44  }
      ] 
    }



    console.info(Object.keys(myData).length) //  => 3

Я понятия не имею, кто поставил вам минус и почему.

paulsm4 02.03.2019 02:47
Ответ принят как подходящий

Думаю, я добавлю это как ответ :)

Данные, которые вы получаете с сервера, находятся в формате JSON, так как вы обернули их JSON.stringify. Теперь вам нужно сначала проанализировать данные, прежде чем вы сможете что-то с ними сделать. Используйте JSON.parse для этого:

const serverJSONResponse = getJSONFromServer();
const myData = JSON.parse(serverJSONResponse);
const length = Object.keys(myData).length;

Обратите внимание, что есть способы сообщить, что вы используете на клиенте, чтобы сделать запрос, что ответ будет в формате JSON, а затем он автоматически вызовет JSON.parse для вас, чтобы вам не нужно было делать это вручную каждый раз.

Другие вопросы по теме