Javascript 查询/搜索3个JSON文件,将项目连接起来,就像SQL数据库连接一样 问题:
假设我有3个JSON文件 有没有一种方法可以从3个JSON文件中获取数据,其中前2个JSON数据集包含Javascript 查询/搜索3个JSON文件,将项目连接起来,就像SQL数据库连接一样 问题:,javascript,php,json,search,Javascript,Php,Json,Search,假设我有3个JSON文件 有没有一种方法可以从3个JSON文件中获取数据,其中前2个JSON数据集包含List对象数组和Tag对象数组,第3个JSON数据集包含一个对象数组,该对象数组具有List.id和Tag.id以将标记连接到列表,就像使用3个关系数据库一样SQL中的数据库表 示例搜索 因此,例如,如果我需要获取属于List.id1的所有Tags,我会在JSON文件/datasetList\u Tags.JSON中查找属性为List\u id==1的记录,所有匹配对象都会返回tag\u id
List
对象数组和Tag
对象数组,第3个JSON数据集包含一个对象数组,该对象数组具有List.id
和Tag.id
以将标记连接到列表,就像使用3个关系数据库一样SQL中的数据库表
示例搜索因此,例如,如果我需要获取属于
List.id
1的所有Tags
,我会在JSON文件/datasetList\u Tags.JSON
中查找属性为List\u id==1
的记录,所有匹配对象都会返回tag\u id
,并使用它来查找Tags.JSON
文件/dataset从列表\u tags.json
结果中,搜索具有与id匹配的tag.id
属性的所有标记
我可以使用JavaScript或PHP
我认为它可能如何工作:
- 搜索
数据以查找所有List_Tags.json
==1的记录`List_id
- 将这些记录(如果有)保存到数组变量
- 现在,通过迭代每个数组对象来搜索
file/dataset,从\u当前\u数组\u迭代\u循环中搜索Tags.json
tag.id==id\u的项
- 将与上一步匹配的每个标记项添加到新数组中
- 完成后,返回新数组,该数组包含属于列表ID==1的列表的所有标记
JSON文件对象属性
- 文件1=
具有列出。json
- 身份证
- 名字
- 描述
- 文件2=
具有以下对象数组:标记。json
- 身份证
- 名字
- 描述
- 文件3=
具有一个对象数组,用于将标记连接到具有以下内容的列表:列表\u标记。json
- 列表id
- 标签号
JSON文件数据示例:
我用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);
你在等什么问题?@splash58问题/问题在我帖子的底部…问是否有一种方法可以从3个JSON数据集获取数据,就像从3个关系数据库获取数据一样,其中第3个表是连接数据集1和2的连接器/联接表,我理解。让我们等待大师:)@splash58我更新了我的问题,让它更清楚hopefuilly@splash58我看你对PHP数组真的很在行。如果我所有的JSON数据都转换成多维数组,你认为我关于如何搜索每个数组的最新问题的理论在PHP中会起作用吗。谢谢你的帮助
<?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);