Возвращаемая длина проанализированного массива json - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть массив объектов, которые я получаю из файла JSON. После получения массива с помощью fs.readFileSync.

jsonData = JSON.stringify(fs.readFileSync('data.json'.toString(), 'utf8'));
parsedJsonData = JSON.parse(jsonData);

и когда я делаю:

console.log(parsedJsonData);

возвращает: 710 вместо того, что я ожидаю равным 1

вот массив (только с одним объектом)

[
{
    "email": "ibrahim.m.fadel@gmail.com",
    "username": "ibrahim fadel",
    "password": {
        "type": "Buffer",
        "data": [
            25,
            0,
            0,
            0,
            2,
            115,
            116,
            114,
            105,
            110,
            103,
            0,
            8,
            0,
            0,
            0,
            99,
            97,
            114,
            101,
            121,
            51,
            49,
            0,
            0
        ]
    },
    "id": 0
}
]

Я просто хочу найти количество объектов в массиве, которое равно 1, чтобы я мог пройти по нему

1 Ответ

0 голосов
/ 02 ноября 2018

Излишнее JSON.stringify() над строкой вызывает проблемы, посмотрите на это:

console.log(JSON.stringify("[\n" +    "{\n" +    "    \"email\": \"ibrahim.m.fadel@gmail.com\",\n" +    "    \"username\": \"ibrahim fadel\",\n" +    "    \"password\": {\n" +    "        \"type\": \"Buffer\",\n" +    "        \"data\": [\n" +    "            25,\n" +    "            0,\n" +    "            0,\n" +    "            0,\n" +    "            2,\n" +    "            115,\n" +    "            116,\n" +    "            114,\n" +    "            105,\n" +    "            110,\n" +    "            103,\n" +    "            0,\n" +    "            8,\n" +    "            0,\n" +    "            0,\n" +    "            0,\n" +    "            99,\n" +    "            97,\n" +    "            114,\n" +    "            101,\n" +    "            121,\n" +    "            51,\n" +    "            49,\n" +    "            0,\n" +    "            0\n" +    "        ]\n" +    "    },\n" +    "    \"id\": 0\n" +    "}\n" +    "]"))
.as-console-wrapper { max-height: 100% !important; top: 0; }

возвращает экранированную строку, поэтому при вызове функции JSON.parse() эта функция фактически возвращает строку:

console.log(typeof JSON.parse(JSON.stringify("[\n" +    "{\n" +    "    \"email\": \"ibrahim.m.fadel@gmail.com\",\n" +    "    \"username\": \"ibrahim fadel\",\n" +    "    \"password\": {\n" +    "        \"type\": \"Buffer\",\n" +    "        \"data\": [\n" +    "            25,\n" +    "            0,\n" +    "            0,\n" +    "            0,\n" +    "            2,\n" +    "            115,\n" +    "            116,\n" +    "            114,\n" +    "            105,\n" +    "            110,\n" +    "            103,\n" +    "            0,\n" +    "            8,\n" +    "            0,\n" +    "            0,\n" +    "            0,\n" +    "            99,\n" +    "            97,\n" +    "            114,\n" +    "            101,\n" +    "            121,\n" +    "            51,\n" +    "            49,\n" +    "            0,\n" +    "            0\n" +    "        ]\n" +    "    },\n" +    "    \"id\": 0\n" +    "}\n" +    "]")))
.as-console-wrapper { max-height: 100% !important; top: 0; }

Решение - убрать звонок JSON.stringify

console.log(JSON.parse("[\n" +    "{\n" +    "    \"email\": \"ibrahim.m.fadel@gmail.com\",\n" +    "    \"username\": \"ibrahim fadel\",\n" +    "    \"password\": {\n" +    "        \"type\": \"Buffer\",\n" +    "        \"data\": [\n" +    "            25,\n" +    "            0,\n" +    "            0,\n" +    "            0,\n" +    "            2,\n" +    "            115,\n" +    "            116,\n" +    "            114,\n" +    "            105,\n" +    "            110,\n" +    "            103,\n" +    "            0,\n" +    "            8,\n" +    "            0,\n" +    "            0,\n" +    "            0,\n" +    "            99,\n" +    "            97,\n" +    "            114,\n" +    "            101,\n" +    "            121,\n" +    "            51,\n" +    "            49,\n" +    "            0,\n" +    "            0\n" +    "        ]\n" +    "    },\n" +    "    \"id\": 0\n" +    "}\n" +    "]")
.length)
.as-console-wrapper { max-height: 100% !important; top: 0; }
...