Javascript 如何动态获取JSON文件中嵌套的数据
我正在构建一个功能,允许用户键入一个单词,选择该单词所使用的语言,然后获取单词的定义和使用该功能的示例 我要获取的数据是位于“意义”的“感叹号”位置0处的任何数据。通过这种方式,我可以确保用户获得他们要查找的单词的定义和示例。我的问题是,“定义”和“示例”数据的位置因语言而异。如您所见,下面是英文单词的JSON数据格式Javascript 如何动态获取JSON文件中嵌套的数据,javascript,json,Javascript,Json,我正在构建一个功能,允许用户键入一个单词,选择该单词所使用的语言,然后获取单词的定义和使用该功能的示例 我要获取的数据是位于“意义”的“感叹号”位置0处的任何数据。通过这种方式,我可以确保用户获得他们要查找的单词的定义和示例。我的问题是,“定义”和“示例”数据的位置因语言而异。如您所见,下面是英文单词的JSON数据格式 [{ "word": "hello", "phonetic": [ "həˈləʊ", "hɛˈləʊ" ], "
[{
"word": "hello",
"phonetic": [
"həˈləʊ",
"hɛˈləʊ"
],
"meaning": {
"exclamation": [
{
"definition": "used as a greeting or to begin a telephone conversation.",
"example": "hello there, Katie!"
}
]
}
}]
[
{
"word": "bonjour",
"phonetic": "",
"origin": "",
"meaning": {
"nom masculin": {
"definitions": [
{
"definition": "Souhait de bonne journée (adressé en arrivant, en rencontrant).",
"example": "",
"synonyms": [
"salut"
]
}
]
}
}
}
]
下面这个是法语单词的JSON数据格式
[{
"word": "hello",
"phonetic": [
"həˈləʊ",
"hɛˈləʊ"
],
"meaning": {
"exclamation": [
{
"definition": "used as a greeting or to begin a telephone conversation.",
"example": "hello there, Katie!"
}
]
}
}]
[
{
"word": "bonjour",
"phonetic": "",
"origin": "",
"meaning": {
"nom masculin": {
"definitions": [
{
"definition": "Souhait de bonne journée (adressé en arrivant, en rencontrant).",
"example": "",
"synonyms": [
"salut"
]
}
]
}
}
}
]
目前,我正在将每个数据的位置存储在一个变量中,并重复执行此操作,直到达到我试图获取的最终数据的位置,如下所示
const firstData = data[0];
const firstDataKeys = Object.keys(firstData);
const meaningsIndex = firstDataKeys.indexOf("meaning");
const meaningsData = firstData[firstDataKeys[meaningsIndex]]
const meaningsKeys = Object.keys(meaningsData);
我想知道,当所需数据的位置随每个请求而变化时,是否还有其他方法可以动态获取数据。您可以使用类似“深度选择器”的功能,因为响应对象的结构可以更改。请参阅此注释,以获取一个干净的函数,该函数允许您选择属性“定义”,例如 前 会导致这样的结果吗
res = ["Souhait de bonne journée (adressé en arrivan.."].
Javascript允许您使用JSON.parse直接将Javascript解析为对象 所以你可以做一些类似的事情
const word = "exclamation"
const dict = JSON.parse(json);
//These 2 syntaxes are equivalent
const definition1 = dict["meaning"][word]["definitions"][0];
const definition2 = dict.meaning[word].definitions[0];
如果你不知道这个词是否存在,你可以这样做
const word = "exclamation"
const dict = JSON.parse(json);
//These 2 syntaxes are equivalent
const wordInfo = dict.meaning[word];
if(wordInfo)
{
//you can do something more exotic, but this will only call code if the
//word exists.
for(var i = 0;i < wordInfo.definitions.length;i++)
{
console.log(wordInfo.definitions[0])
}
}
const word=“感叹号”
const dict=JSON.parse(JSON);
//这两个语法是等价的
const wordInfo=dict.means[单词];
如果(wordInfo)
{
//您可以做一些更奇特的事情,但这只会在
//这个词是存在的。
for(var i=0;i