文字列、配列、文字列の配列、オブジェクトの配列などのjsonオブジェクトを解析する必要があります。 1つのオブジェクトが多くの型になることは最初からうまくいきませんが、上流からコードを変更することはできません。 代わりにコードで処理する必要があります。私はjQueryやlodashを使用していないので、現代のブラウザ用のピクセルライブラリを構築しています。私は、最も近代的なブラウザをサポートしていることだし、IE> = 9文字列、オブジェクト、および配列を受け入れるJavaScript
はここ
"author": {
"@type": "Person",
"name": "Author"
}
それとも
"author":[{"@type":"Person","name":"Author"}]
それとも
"author": 'Author'
を返すことができるデータの例ですか
"author": ['Author', 'Author1']
これは私のコードです。
let obj = {};
try {
const json = document.querySelector('div.json');
if (json) {
let disc = JSON.parse(json.innerHTML);
let authors = disc.author;
if (typeof authors !== 'undefined' && Array.isArray(authors) && authors.length > 0) {
authors = authors.map((author) => {
if (typeof author === 'object' && author.name) {
return author.name;
} else {
return author;
}
});
}
if (typeof authors !== 'undefined' && !Array.isArray(authors) && typeof authors === 'object') {
authors = [authors.name];
}
if (typeof authors !== 'undefined' && typeof authors === 'string') {
authors = authors.split(',');
}
obj.cAu: authors.join(',');
}
} catch (e) { }
return obj;
私の質問は、より効率的な方法でこれを行うには良い方法がありますか?
オーバーおそらくより良い://codereview.stackexchange。 com/ – tymeJV
すべてを試してみると、爆発する可能性のある部分だけ... – dandavis