查询/搜索 3 个连接项的 JSON 文件,就像 SQL 数据库联接一样



问题

假设我有 3 个 JSON 文件,

有没有办法从 3 个 JSON 文件中获取数据,其中前 2 个 JSON 数据集包含List对象数组和Tag对象数组,第三个 JSON 数据库包含一个对象数组,这些对象具有将标记连接到列表的List.idTag.id,就像您在 SQL 中使用 3 个关系数据库表一样

示例搜索
因此,例如,如果我需要获取属于List.id1 的所有Tags,我会在 JSON 文件/数据集List_Tags.json中查找具有属性list_id == 1的记录,并且所有匹配的对象将返回tag_id并使用它来查找Tags.json文件/数据集以搜索所有具有与List_Tags.json结果中的 ID 匹配的属性tag.id属性的标签

我可以使用 JavaScript 或 PHP

我认为它如何工作:

  • 搜索List_Tags.json数据以查找list_id== 1' 的所有记录
  • 将这些记录(如果有)保存到数组变量
  • 现在,通过遍历每个数组对象来搜索文件/数据集Tags.jsontag.id == ID_FROM_CURRENT_ARRAY_ITERATION_LOOP
  • 与上一步匹配的每个标记项添加到新数组中
  • 完成后,返回新数组,其中包含属于列表 ID == 1 的列表的所有标签

以下是 JSON 文件数据和示例数据


JSON 文件对象属性

  • 文件 1=Lists.json具有对象数组
    • 编号
    • 名字
    • 描述
  • 文件 2=Tags.json具有以下对象数组:
    • 编号
    • 名字
    • 描述
  • 文件 3=List_Tags.json具有对象数组,这些对象将标记连接到列表:
    • list_id
    • tag_id

示例 JSON 文件数据:

// Lists.json File
ListsJsonData =[
{
"id": 1,
"name": "List 1 Name",
"description": "List 1 Description"
},
{
"id": 2,
"name": "List 2 Name",
"description": "List 2 Description"
}
];
// Tags.json File
TagsJsonData =[
{
"id": 1,
"name": "Tag 1 Name",
"description": "Tag 1 Description"
},
{
"id": 2,
"name": "Tag 2 Name",
"description": "Tag 2 Description"
},
{
"id": 3,
"name": "Tag 3 Name",
"description": "Tag 3 Description"
}
];
// Lists_Tags.json File
ListsJsonData =[
{
"list_id": 1,
"tag_id": 1
},
{
"list_id": 1,
"tag_id": 2
},
{
"list_id": 2,
"tag_id": 2
}
];

我用PHP解决了它,我现在也想用JavaScript解决它。

<?php
$list_json = '[{"id":1,"name":"List 1 Name","description":"List 1 Description"},{"id":2,"name":"List 2 Name","description":"List 2 Description"}]';
$list_array = json_decode($list_json);
echo '<pre>';
print_r($list_array);
echo '<hr>';
/////////////////////
///
// search tags_array for id == $id.  Array can be multi-dimensional array or array of objects
function searchForTagId($id, $tags_array) {
foreach ($tags_array as $tag) {
if ($tag->id == $id) {
return $tag;
}
}
return null;
}

$tags_json = '[{"id":1,"name":"Tag 1 Name","description":"Tag 1 Description"},{"id":2,"name":"Tag 2 Name","description":"Tag 2 Description"},{"id":3,"name":"Tag 3 Name","description":"Tag 3 Description"}]';
$tags_array = json_decode($tags_json);
echo '<pre>';
print_r($tags_array);
echo '<hr>';
/////////////////////

$list_tags_json = '[{"list_id":1,"tag_id":1},{"list_id":1,"tag_id":2},{"list_id":2,"tag_id":2}]';
$list_tags_array = json_decode($list_tags_json);
echo '<pre>';
print_r($list_tags_array);
echo '<hr>';
//////////////////////

$list_1_tags = array();
foreach ($list_tags_array as $list_tag) {
if ($list_tag->list_id == 2) {
$list_1_tags[] = searchForTagId($list_tag->tag_id, $tags_array);
}
}
echo '<pre>';
print_r($list_1_tags);

最新更新