Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何基于另一个属性访问嵌套的JSON属性';s值多少?_Javascript_Json - Fatal编程技术网

Javascript 如何基于另一个属性访问嵌套的JSON属性';s值多少?

Javascript 如何基于另一个属性访问嵌套的JSON属性';s值多少?,javascript,json,Javascript,Json,起初,我的问题可能听起来不清楚。我对JSON不熟悉,但让我解释一下 我有以下JSON文件(我无法修改): { “jsonexample”:[ { “名称”:“Test1”, “文本”:“这是测试1。”, “测试编号”:1 }, { “名称”:“Test2”, “文本”:“这是测试2。”, “测试编号”:2 } ] } 如何根据名称查找TestNumber 此代码不起作用: console.log(jsonexample.Name.Test1.TestNumber); 我想它会从Test1名称

起初,我的问题可能听起来不清楚。我对
JSON
不熟悉,但让我解释一下

我有以下
JSON
文件(我无法修改):

{
“jsonexample”:[
{
“名称”:“Test1”,
“文本”:“这是测试1。”,
“测试编号”:1
},
{
“名称”:“Test2”,
“文本”:“这是测试2。”,
“测试编号”:2
}
]
}
如何根据
名称
查找
TestNumber

此代码不起作用:

console.log(jsonexample.Name.Test1.TestNumber);
我想它会从
Test1
名称数据中给我
1

通过只提供
名称
信息就可以获得
TestNumber
数据的代码是什么



编辑:我怎样才能使JSON网页:API?你有一些无效的JSON,我可能已经在下面清理了

var j={
JSONE示例:[{
名称:“Test1”,
正文:“这是测试1。”,
测试编号:1
}, {
名称:“Test2”,
课文:“这是测试2。”,
测试编号:2
}]
};

log(j.jsonexample[0].Name)如果您有一个有效的JSON字符串,您可以将其转换为JavaScript对象<代码>[]
表示一个数组<代码>{}
表示一个对象

因此,让我们将字符串转换为有效的JSON:

{
"jsonexample" : [
  {
     "Name" : "Test1",
     "Text": "This is test 1.",
     "TestNumber" : 1
  },
  {
     "Name" : "Test2",
     "Text" : "This is test 2.",
     "TestNumber" : 2
  }
]
}
(它是一个包含对象数组的属性的对象)

然后在javascript中,您可以使用
JSON.parse
转换该字符串:

var json=json.parse(上面的json);
警报(json.jsonexample[0].Name);//测试1
警报(json.jsonexample[0].Text);//这是测试1。
警报(json.jsonexample[0].TestNumber);//2.

您可以在数组中循环,并执行类似于
if(object.Name=Name){return object.TestNumber}
的操作,如下演示所示

(假设您的源代码实际上是需要解析的JSON字符串。如果它已经是JavaScript对象,您可以跳过该步骤。)

const
myData=JSON.parse(getDataArrayAsJson()),
num=getNumberByName(myData,“Test1”);
console.log(num);
函数getNumberByName(数据,名称){
for(让数据对象){
如果(object.Name=Name){return object.TestNumber}
}
}
函数getDataArrayAsJson(){
返回JSON.stringify([
{Name:“Test1”,Text:“这是Test1.”,TestNumber:1},
{Name:“Test2”,Text:“这是Test2.”,TestNumber:2}
]);
}
两件事:

  • 如果您有一个字符串
    {“jsonexample”:…}
    并将其解析为
    某物
    ,最后您将得到
    某物.jsonexample
    (而不是
    jsonexample
  • something.jsonexample
    将是一个数组,它将没有
    something.jsonexample.Test1
    ,而是
    something.jsonexample[]
    Test1
    Name
    内部的值,因此即使您知道索引为0,
    Test1
    将是
    something.jsonexample[0]的结果。Name
    something.jsonexample[0]。Test1
    将不存在
  • 如何根据
    名称
    查找
    TestNumber

    正是这样,使用:

    var jsonStringFromWeb=`{
    “jsonexample”:[
    {
    “名称”:“Test1”,
    “文本”:“这是测试1。”,
    “测试编号”:1
    },
    {
    “名称”:“Test2”,
    “文本”:“这是测试2。”,
    “测试编号”:2
    }
    ]
    }`;
    var parsedJson=JSON.parse(jsonStringFromWeb);
    var neededObject=parsedJson.jsonexample.find(item=>item.Name==“Test1”);
    
    日志(neededObject.TestNumber)我认为对象之间缺少逗号,因为我是JSON新手,所以我可能写错了文件示例。谁说需要的值在第一个对象中?JSON实际上需要在键周围加双引号,所以这还不是很有效。(Lemmy是正确的,您可以完全不用提供数组作为JSON的顶级结构——从技术上讲,您甚至可以只提供一个基本值,但这通常不会特别有用。)我可以为网页上的JSON文件提供此功能吗?当然可以。如果从文件中读取JSON字符串并将其存储在名为
    dataArray
    的变量中,那么可能需要对演示代码进行的唯一更改是将
    getDataArrayAsJson()
    替换为
    dataArray
    。您是否可以编辑答案以获得这两个演示代码?谢谢我不知道你说的“获取两个演示代码”是什么意思。(我无法获取您的JSON字符串,因为我无法访问您的服务器。)让我澄清一下我的意思,您能否提供一个演示代码,用于从网页(API)获取JSON文件的方法?