问题
假设我有 3 个 JSON 文件,
有没有办法从 3 个 JSON 文件中获取数据,其中前 2 个 JSON 数据集包含List
对象数组和Tag
对象数组,第三个 JSON 数据库包含一个对象数组,这些对象具有将标记连接到列表的List.id
和Tag.id
,就像您在 SQL 中使用 3 个关系数据库表一样
示例搜索
因此,例如,如果我需要获取属于List.id
1 的所有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.json
tag.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);