Показать сообщение отдельно
  #1 (permalink)  
Старый 05.12.2021, 15:38
Новичок на форуме
Отправить личное сообщение для u015173353@mail.ru Посмотреть профиль Найти все сообщения от u015173353@mail.ru
 
Регистрация: 05.12.2021
Сообщений: 6

обращение к JSON
Доброго времени суток. не пойму в чем причина не могу обратиться к элементам json.

Имею на странице index.html
<textera id='text'>
{
    "TaggedPDF": {
        "Part": [
            {
                "H3": "Раздел",
                "Sect": {
                    "Sect": [
                        {
                            "H4": "Таблица",
                            "P": [
                                "Состав",
                                "тип"
                            ],
                            "Table": [
                                {
                                    "TR": [
                                        {
                                            "TH": [
                                                "Номер",
                                                "Наименование",
                                                "Ед. изм.",
                                                "101",
                                                "102",
                                                "103",
                                                "104"
                                            ]
                                        },
                                        {
                                            "TH": [
                                                "100",
                                                "Затраты",
                                                "ч"
                                            ],
                                            "TD": [
                                                "154",
                                                "185",
                                                "227",
                                                "0,319"
                                            ]
                                        },
                                        {
                                            "TH": [
                                                "0101",
                                                "разряд",
                                                "-"
                                            ],
                                            "TD": [
                                                "3,8",
                                                "3,8",
                                                "3,8",
                                                "3,8"
                                            ]
                                        },
                                        {
                                            "TH": [
                                                "0100",
                                                "Затраты",
                                                "ч"
                                            ],
                                            "TD": [
                                                "0,8",
                                                "0,965",
                                                "0,175",
                                                "0,66"
                                            ]
                                        },
                                        {
                                            "TH": [
                                                "",
                                                "МЕХАНИЗМЫ",
                                                ""
                                            ],
                                            "TD": [
                                                "",
                                                "",
                                                "",
                                                ""
                                            ]
                                        },
                                        {
                                            "TH": "0302",
                                            "TD": [
                                                "Топор",
                                                "ч",
                                                "16",
                                                "193",
                                                "235",
                                                "332"
                                            ]
                                        },
                                        {
                                            "TH": "0204",
                                            "TD": [
                                                "Молоток",
                                                "ч",
                                                "16",
                                                "193",
                                                "235",
                                                "332"
                                            ]
                                        }
                                    ]
                                }
                            ]
                        },
                        {
                            "H4": "Таблица",
                            "P": "Состав",
                            "Table": {
                                "TR": [
                                    {
                                        "TH": [
                                            "Номер",
                                            "Наименование",
                                            "Ед. изм.",
                                            "701"
                                        ]
                                    },
                                    {
                                        "TD": [
                                            "0100",
                                            "Затраты",
                                            "ч",
                                            "71"
                                        ]
                                    },
                                    {
                                        "TD": [
                                            "",
                                            "МЕХАНИЗМЫ",
                                            "",
                                            ""
                                        ]
                                    },
                                    {
                                        "TD": [
                                            "0102",
                                            "Молоток",
                                            "ч",
                                            "71"
                                        ]
                                    }
                                ]
                            }
                        }
                    ]
                }
            }
        ]
    }
}
</textera>


через валидотор проверил json все в норме

обрабатываю данные так через script.js
window.onload = parse;   // при загрузке

function line(a){
  console.log ('key=Table содержимое ', a);  // рабочий вариант в 2х таблицах																				
   console.log('key=Table содержимое ', a.TR[0].TH[0]); // для второй таблицы должно работать но нет ошибка Uncaught TypeError: Cannot read properties of undefined (reading '0')
}

function traverse(jsonObj){ 										
    if (jsonObj !== null && typeof jsonObj == "object" ) {			// проверка на объект
        Object.entries(jsonObj).forEach(([key, value]) => {			// перебираем таблицы ключ значение
			if (key=="Table") {										//если ключ равняется Table
				line(value); // обрабатываем дальше
				}
            traverse(value);      // перебор вложения
        });
    }
}

function parse() {
let obj = JSON.parse(document.getElementById('text').value); 
traverse(obj.TaggedPDF.Part[0].Sect.Sect); // выбираю нужную часть json
}


обращение ко всем элементам в line(a) для первой таблицы проходит успешно, в ручную могу обращаться ко всем элементам

а вот ко второй таблице не получается обращаться к элементам a.TR[0] и далее (.TH[0]) максимум отображает до a.TR после ошибка Uncaught TypeError: Cannot read properties of undefined (reading '0')

Последний раз редактировалось u015173353@mail.ru, 05.12.2021 в 19:33.
Ответить с цитированием