Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
Json 查找两个或多个API端点之间的公共字段_Json_Rest_Comparison - Fatal编程技术网

Json 查找两个或多个API端点之间的公共字段

Json 查找两个或多个API端点之间的公共字段,json,rest,comparison,Json,Rest,Comparison,我想比较两个或多个API,并输出根据其中一个字段找到的公共记录 例如,给定此API: 我想将它与另一个类似的比较,它可能有不同的字段,尽管它肯定有一个“全名”字段,就像第一个字段一样 我很高兴得到我想要比较的数据的JSON,并从我的本地机器上运行所有东西:这只是概念验证和测试,我不是在开发有限的产品 我已经看过了,因为它现在已经过时了,而且它不能完全满足我的要求,所以我发布了这个问题。任何语言/框架我都可以。提前谢谢 例如: 第一个JSON: { "entry_id":

我想比较两个或多个API,并输出根据其中一个字段找到的公共记录

例如,给定此API:

我想将它与另一个类似的比较,它可能有不同的字段,尽管它肯定有一个“全名”字段,就像第一个字段一样

我很高兴得到我想要比较的数据的JSON,并从我的本地机器上运行所有东西:这只是概念验证和测试,我不是在开发有限的产品

我已经看过了,因为它现在已经过时了,而且它不能完全满足我的要求,所以我发布了这个问题。任何语言/框架我都可以。提前谢谢

例如:

第一个JSON:

    {
        "entry_id": "460",
        "Surname": "Embrechts",
        "Name": "Karl",
        "Sex": "F",
        "Occupation": "Farmer"
    },
第二个JSON:

    {
        "entry_id": "460",
        "Surname": "Embrechts",
        "Name": "Karl",
        "Full Name": "Karl Embrechts"
        "Sex": "M",
        "Married": "Yes"
        "Job": "Photographer"
    },

我希望能够通过“姓氏”和“姓名”字段找到这两条关于同一个人的记录。

使用ajax获取值。使用JSON.Parse()将它们转换为对象。假设它是一个值数组,那么您将有2个数组。迭代这两个数组并比较您已经知道它们在两侧存在的属性,如下所示:

var isTheSame = value1["Name"] === value2["Name"] && value1["SurName"] === value2["SurName"];

事实上我如何将数组存储到变量中,以便它们在调用之外可用?@HBMCS“在调用之外可用”有点宽泛。您可以做的是将它们分配给全局变量。但是您应该注意到ajax调用是异步的,您可以将其分配给变量,但是您需要确保使用该变量的代码应该在ajax调用完成后运行。您可以通过使用
async wait
或chaining
来实现这一点,然后在返回的
Promise
s上使用
s,如果我从另一个ceck()函数中调用一个fetchData函数(使用xhr调用),则会发生什么情况,例如:函数fetchData(){const request=new XMLHttpRequest();reques.open('GET',link,true);等等…函数检查(){fetchData()console.log(data)}?只有在我调用了一次函数之后,这样做才会起作用。当我从第二次调用check()时,我会在控制台中得到结果,而不是第一次,当它是“未识别”时。将数据变量或空数组初始化没有帮助。在异步世界中
check(){fetchData()console.log(数据)}
fetchData
具有异步部分。因此,该函数中的某些代码将在函数执行后完成。这并不保证
控制台。日志操作将在这些操作后工作。您可以做的是从
fecthdata
返回
Promise
,然后像这样链接日志操作:
check(){fetchData()。然后(()=>console.log(data))}
谢谢,我将研究promise是如何工作的(以前从未使用过),并希望能够成功地实现它。