如何创建 JSON 个对象文件夹名称和文件名称视图
How to create JSON objects Folder name and File Name View
我有一个这样的 JSON 文件:
{
"Sheet1": [
{
"Folder name": "Folder 1",
"Filename": "1- Introduction.mp4",
},
{
"Filename": "2- Prerequisites.mp4",
},
{
"Filename": "4- What is React Native.mp4",
},
{
"Folder name": "Folder 2",
"Filename": "1- Knowledge.mp4",
},
{
"Filename": "2- Exercise.mp4",
},]
}
如何做成这样:
{
"Folder 1": [
{
"Filename": "1- Introduction.mp4",
},
{
"Filename": "2- Prerequisites.mp4",
}
],
"Folder 2": [
{
"Filename": "1- Knowledge.mp4",
},
{
"Filename": "2- Exercise.mp4",
}
]
}
我对 JSON 不熟悉,但我知道 Python 词典。我尝试在 Python 中执行此操作,但无法以这种方式执行。
任何帮助将不胜感激。
正如 Taplar 所指出的,您无法在 JSON 中创建没有键的对象值。您可以改用对象数组。
我正在考虑将始终在数组的第一个元素中定义该文件夹,而仅具有“文件名”键的下一个对象将在先前定义的文件夹中。然后,当找到另一个文件夹时,下一个文件将在新文件夹中。
考虑到这一点,您可以使用此功能:
const fs = require('fs');
function mapFolderStructure(json) {
const object = JSON.parse(json);
const returnObject = {};
let currentFolder = null;
for (const key in object) {
returnObject[key] = {};
for (const item of object[key]) {
if (item.hasOwnProperty('Folder name')) {
currentFolder = item['Folder name'];
}
if (currentFolder) {
if (!returnObject[key][currentFolder]) returnObject[key][currentFolder] = [];
returnObject[key][currentFolder].push({ Filename: item.Filename });
}
}
}
return JSON.stringify(returnObject, null, 4);
}
const inputJson = fs.readFileSync('path/to/input', 'utf8');
const outputJson = mapFolderStructure(inputJson);
fs.writeFileSync('path/to/output', outputJson);
我有一个这样的 JSON 文件:
{
"Sheet1": [
{
"Folder name": "Folder 1",
"Filename": "1- Introduction.mp4",
},
{
"Filename": "2- Prerequisites.mp4",
},
{
"Filename": "4- What is React Native.mp4",
},
{
"Folder name": "Folder 2",
"Filename": "1- Knowledge.mp4",
},
{
"Filename": "2- Exercise.mp4",
},]
}
如何做成这样:
{
"Folder 1": [
{
"Filename": "1- Introduction.mp4",
},
{
"Filename": "2- Prerequisites.mp4",
}
],
"Folder 2": [
{
"Filename": "1- Knowledge.mp4",
},
{
"Filename": "2- Exercise.mp4",
}
]
}
我对 JSON 不熟悉,但我知道 Python 词典。我尝试在 Python 中执行此操作,但无法以这种方式执行。 任何帮助将不胜感激。
正如 Taplar 所指出的,您无法在 JSON 中创建没有键的对象值。您可以改用对象数组。
我正在考虑将始终在数组的第一个元素中定义该文件夹,而仅具有“文件名”键的下一个对象将在先前定义的文件夹中。然后,当找到另一个文件夹时,下一个文件将在新文件夹中。
考虑到这一点,您可以使用此功能:
const fs = require('fs');
function mapFolderStructure(json) {
const object = JSON.parse(json);
const returnObject = {};
let currentFolder = null;
for (const key in object) {
returnObject[key] = {};
for (const item of object[key]) {
if (item.hasOwnProperty('Folder name')) {
currentFolder = item['Folder name'];
}
if (currentFolder) {
if (!returnObject[key][currentFolder]) returnObject[key][currentFolder] = [];
returnObject[key][currentFolder].push({ Filename: item.Filename });
}
}
}
return JSON.stringify(returnObject, null, 4);
}
const inputJson = fs.readFileSync('path/to/input', 'utf8');
const outputJson = mapFolderStructure(inputJson);
fs.writeFileSync('path/to/output', outputJson);