“我正在设置一个文件浏览器,并将文件夹的名称保存在数据库中。任何数量的文件夹都可以保存在数据库中,从保存的数据中,我想创建一个json树。
这是我的数据库表结构
folder_id folder_name parent_id
1 parentFolder1 <NULL>
2 parentFolder2 <NULL>
3 subFolder1 1
4 subFolder2 1
5 subFolder3 3
6 subFolder4 2
7 subFolder5 5
parent\u id是一个外键,用于引用文件夹id。
这是我试图从上述数据库创建的json树结构,将来将添加更多父文件夹和子文件夹。是否可以从上面的表结构中创建json树?有人能帮我吗?
[
{
"id": "1",
"value": "parentFolder1",
"data": [
{
"id": "3",
"value": "subFolder1",
"data": [
{
"id": "5",
"value": "subFolder3",
"data": [
{
"id": "7",
"value": "subFolder5",
"data": []
]
}
]
}
},
{
"id": "4",
"value": "subFolder2",
"data": []
}
]
},
{
"id": "2",
"value": "parentFolder2",
"data": [
{
"id": "6",
"value": "subFolder4",
"data": []
}
]
}
]
这里是C代码示例,这不是一个完美的代码。您需要修改它以供使用
#if 0
folder_id folder_name parent_id
1 parentFolder1 <NULL>
2 parentFolder2 <NULL>
3 subFolder1 1
4 subFolder2 1
5 subFolder3 3
6 subFolder4 2
7 subFolder5 5
#endif
#include<stdio.h>
#include<iostream>
#include<vector>
#include<tuple>
#include <bits/stdc++.h>
#include<boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
std::vector<std::tuple <int, std::string, int>> list;
namespace pt = boost::property_tree;
pt::ptree rootNode;
int main () {
list.push_back(std::make_tuple(1, "parentFolder1", 0));
list.push_back(std::make_tuple(2, "parentFolder2", 0));
list.push_back(std::make_tuple(3, "subFolder1", 1));
list.push_back(std::make_tuple(4, "subFolder2", 1));
list.push_back(std::make_tuple(5, "subFolder3", 3));
list.push_back(std::make_tuple(6, "subFolder4", 2));
list.push_back(std::make_tuple(7, "subFolder5", 5));
int x, y;
int k = 0;
pt::ptree mainRootNode;
for (int i=0; i < list.size(); i++) {
if (std::get<2>(list[i])) {
continue;
}
k = 0;
pt::ptree subMainRootNode;
subMainRootNode.add("id", std::get<0>(list[i]));
subMainRootNode.add("value", std::get<1>(list[i]));
pt::ptree Node;
y = x = std::get<0>(list[i]);
int saved_place = 0;
for (int j = 0; j < list.size(); j++) {
if (x == std::get<2>(list[j])) {
k++;
std::string str;
for(int m = 0;m < k; m++) {
str.append("data.");
}
pt::ptree child;
std::string id = str + "id";
std::string value = str + "value";
subMainRootNode.add(id, std::get<0>(list[j]));
subMainRootNode.add(value, std::get<1>(list[j]));
x = std::get<0>(list[j]);
if (!saved_place) {
saved_place = j;
}
}
if (((j+1) == list.size()) && saved_place) {
j = saved_place ;
k = 0;
saved_place = 0;
x = y;
}
}
mainRootNode.add_child("data", subMainRootNode);
pt::write_json(std::cout, subMainRootNode);
}
}
$arr = array(
array('id'=>100, 'parentid'=>0, 'name'=>'a'),
array('id'=>101, 'parentid'=>100, 'name'=>'a'),
array('id'=>102, 'parentid'=>101, 'name'=>'a'),
array('id'=>103, 'parentid'=>101, 'name'=>'a'),
);
$new = array();
foreach ($arr as $a){
$new[$a['parentid']][] = $a;
}
$tree = createTree($new, array($arr[0]));
print_r($tree);
function createTree(&$list, $parent){
$tree = array();
foreach ($parent as $k=>$l){
if(isset($list[$l['id']])){
$l['data'] = createTree($list, $list[$l['id']]);
}
$tree[] = $l;
}
return $tree;
}
问题内容: 好的,我一直在绞尽脑汁尝试从mysql构建JSON数组。数组必须采用以下格式。我正在使用fullcalendar,并希望使日历上的事件动态化。下面是构建数组的代码,但当前它无法从mysql获取信息 问题答案: 你想做这样的事情吗? 它以以下格式返回json字符串: 或类似这样的东西:
问题内容: 我有一个具有以下布局的SQL Server 我已经从该博客中获取了以下代码,以便根据我希望使用的数据创建JSON对象,但是他的数据存储方式有所不同。如何创建从数据库中提取的同一对象? 我猜我需要使该文件为.cshtml文件而不是.js文件,并使用此文件: 但是,如何修改此代码以产生相同的JSON对象? 这是博客中的相关代码,我的尝试如下: 编辑: 我现在正在为GetEvents命令使用
我使用Angular调用外部API。Json数据的格式如下: 既然json数据是嵌套的,我如何在typescript中创建一个类来读取它? 请指导如果PermissionProfile,PermissionProfile将是独立的嵌套类? 我该如何申报?
问题内容: 是否可以从结构动态创建mysql数据库。 好像卡在了密码提示符下 问题答案: 试试吧
本文向大家介绍JavaScript从JSON数据创建数组?,包括了JavaScript从JSON数据创建数组?的使用技巧和注意事项,需要的朋友参考一下 要根据JSON数据创建数组,请使用from JavaScript的概念。假设以下是我们的数据- 以下是根据上述数据创建数组的代码- 示例 要运行上述程序,您需要使用以下命令- 在这里,我的文件名为demo82.js。 输出结果 这将产生以下输出-
问题:是否可以在迁移脚本中创建一个新的DB,然后连接到它?怎么做? 我的场景:我试图在我的Java项目(使用Jersey2.4+Tomcat7+PostgreSQL 9.3.1+EclipseLink的RESTful应用程序)中使用flyway来管理使用Git的不同开发人员之间的更改。我编写了我的init脚本并运行它: 而且效果很好。问题是我不能用我的脚本创建新的DB。当我在脚本中包含以下一行时: