十年河东,十年河西,莫欺骚年穷...打错一个字哈、~_~

接着上一篇博客,上一篇博客是=使用数据库结合LINQ构造的,为了方便理解,本篇采用泛型分组进行构造。

有兴趣的小虎斑可以参考上一篇博客:如何构造分层次的 Json 数据

本篇很简单,直接上代码

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks; namespace DFS
{
class Program
{
static void Main(string[] args)
{
List<HelloChinaModel> MList = new List<HelloChinaModel>()
{
new HelloChinaModel(){ Id=,Province="河南省",City="商丘市",District="永城市",OrgName="薛湖镇",AddTime=DateTime.Now},
new HelloChinaModel(){ Id=,Province="河南省",City="商丘市",District="夏邑县",OrgName="火店乡",AddTime=DateTime.Now},
new HelloChinaModel(){ Id=,Province="河南省",City="商丘市",District="睢阳区",OrgName="龙华小区",AddTime=DateTime.Now},
new HelloChinaModel(){ Id=,Province="河南省",City="平顶山市",District="新华区",OrgName="河南城建学院",AddTime=DateTime.Now},
new HelloChinaModel(){ Id=,Province="河南省",City="平顶山市",District="鲁山县",OrgName="炉山镇",AddTime=DateTime.Now},
new HelloChinaModel(){ Id=,Province="河南省",City="洛阳市",District="阳逻县",OrgName="大杨镇",AddTime=DateTime.Now}, new HelloChinaModel(){ Id=,Province="江苏省",City="苏州市",District="张家港市",OrgName="乐余镇",AddTime=DateTime.Now},
new HelloChinaModel(){ Id=,Province="江苏省",City="苏州市",District="昆山市",OrgName="小上海镇",AddTime=DateTime.Now},
new HelloChinaModel(){ Id=,Province="江苏省",City="南京市",District="雨花台区",OrgName="雨花台小区",AddTime=DateTime.Now},
new HelloChinaModel(){ Id=,Province="江苏省",City="徐州市",District="沛县",OrgName="王文学镇",AddTime=DateTime.Now}, new HelloChinaModel(){ Id=,Province="山东省",City="日照市",District="花果山县",OrgName="猴子镇",AddTime=DateTime.Now},
new HelloChinaModel(){ Id=,Province="山东省",City="青岛市",District="青岛啤酒县",OrgName="扎啤镇",AddTime=DateTime.Now},
};
// 首先根据省份分组
var P_ls = MList.GroupBy(a => a.Province ).Select(g => (new { Province = g.Key, Citys = g })).ToList();//省份列表
//
List<Model_P> PList = new List<Model_P>();
foreach (var item in P_ls)
{
Model_P P = new Model_P();
// //
List<Model_C> CList = new List<Model_C>();
//获取各个分组
var Province = item.Province;//省份的名称
var CitysList = item.Citys;//省份对应的市 列表
var C_ls = CitysList.GroupBy(a => a.City ).Select(g => new { City = g.Key, Districts = g }) ;//市/区列表
foreach (var Citem in C_ls)
{
List<Model_D> DList = new List<Model_D>();
Model_C C = new Model_C();
//
var DistrictsLsit = Citem.Districts;//
var D_ls = DistrictsLsit.GroupBy(a => a.District ).Select(g => new { Districts = g.Key, OrgNames = g });//县/区列表
foreach (var Ditem in D_ls)
{
List<Model_O> OList = new List<Model_O>();
Model_D D = new Model_D(); var OrgNamesList = Ditem.OrgNames.ToList();
var O_ls = OrgNamesList.GroupBy(a =>a.OrgName ).Select(g => new { OrgName = g.Key });//乡镇列表/没有下级了 foreach (var Oitem in O_ls)
{ Model_O O = new Model_O();
string orgName = Oitem.OrgName.ToString();
O.OrgName = orgName;
OList.Add(O);
D.nodes = OList;
}
string Dname = Ditem.Districts.ToString();
D.District = Dname; DList.Add(D); C.nodes = DList;
}
string Cname = Citem.City.ToString(); C.City=Cname;
CList.Add(C);
P.nodes = CList;
}
P.Province = item.Province.ToString(); PList.Add(P);
}
string Json = JsonConvert.SerializeObject(PList);
Console.WriteLine(Json); Console.ReadKey();
}
} public partial class HelloChinaModel
{
public int Id { get; set; }
public string Province { get; set; }
public string City { get; set; }
public string District { get; set; }
public string OrgName { get; set; }
public Nullable<System.DateTime> AddTime { get; set; }
} /// <summary>
/// 省
/// </summary>
public class Model_P
{
public string Province { get; set; }
public List<Model_C> nodes { get; set; }
}
/// <summary>
/// 市/区
/// </summary>
public class Model_C
{
public string City { get; set; }
public List<Model_D> nodes { get; set; }
}
/// <summary>
/// 县(县级市)/区
/// </summary>
public class Model_D
{ public string District { get; set; }
public List<Model_O> nodes { get; set; }
}
/// <summary>
/// 镇/乡/其他
/// </summary>
public class Model_O
{
public string OrgName { get; set; }
} }

构造的数据如下:

[
{
"Province": "河南省",
"nodes": [
{
"City": "商丘市",
"nodes": [
{
"District": "永城市",
"nodes": [
{
"OrgName": "薛湖镇"
}
]
},
{
"District": "夏邑县",
"nodes": [
{
"OrgName": "火店乡"
}
]
},
{
"District": "睢阳区",
"nodes": [
{
"OrgName": "龙华小区"
}
]
}
]
},
{
"City": "平顶山市",
"nodes": [
{
"District": "新华区",
"nodes": [
{
"OrgName": "河南城建学院"
}
]
},
{
"District": "鲁山县",
"nodes": [
{
"OrgName": "炉山镇"
}
]
}
]
},
{
"City": "洛阳市",
"nodes": [
{
"District": "阳逻县",
"nodes": [
{
"OrgName": "大杨镇"
}
]
}
]
}
]
},
{
"Province": "江苏省",
"nodes": [
{
"City": "苏州市",
"nodes": [
{
"District": "张家港市",
"nodes": [
{
"OrgName": "乐余镇"
}
]
},
{
"District": "昆山市",
"nodes": [
{
"OrgName": "小上海镇"
}
]
}
]
},
{
"City": "南京市",
"nodes": [
{
"District": "雨花台区",
"nodes": [
{
"OrgName": "雨花台小区"
}
]
}
]
},
{
"City": "徐州市",
"nodes": [
{
"District": "沛县",
"nodes": [
{
"OrgName": "王文学镇"
}
]
}
]
}
]
},
{
"Province": "山东省",
"nodes": [
{
"City": "日照市",
"nodes": [
{
"District": "花果山县",
"nodes": [
{
"OrgName": "猴子镇"
}
]
}
]
},
{
"City": "青岛市",
"nodes": [
{
"District": "青岛啤酒县",
"nodes": [
{
"OrgName": "扎啤镇"
}
]
}
]
}
]
}
]

@陈卧龙的博客

如何构造树状 JSON 数据 JSON-Tree的更多相关文章

  1. C# 递归构造树状数据结构(泛型),如何构造?如何查询?

    十年河东,十年河西,莫欺少年穷. 学无止境,精益求精 难得有清闲的一上午,索性写篇博客. 首先,我们需要准备一张表,如下范例: create table TreeTable ( TreeId ) no ...

  2. 菜鸟笔记:node.js+mysql中将JSON数据构建为树(递归制作树状菜单数据接口)

    初学Web端开发,今天是第一次将所学做随笔记录,肯定存在多处欠妥,望大家海涵:若有不足,望大家批评指正. 进实验室后分配到的第一个项目,需要制作一个不确定层级树形菜单的数据接口,对于从来没实战编过程的 ...

  3. Apple Tree POJ - 3321 dfs序列构造树状数组(好题)

    There is an apple tree outside of kaka's house. Every autumn, a lot of apples will grow in the tree. ...

  4. 基于ExtJs6前台,SpringMVC-Spring-Mybatis,resteasy,mysql无限极表设计,实现树状展示数据(treepanel)

    先从后台讲起 1.表的设计 parent_id就是另外一条记录的id,无限极表设计可以参考  http://m.blog.csdn.net/Rookie_Or_Veteran/article/deta ...

  5. 树状数组,Fenwick Tree

    Fenwick Tree, (also known as Binary Indexed Tree,二叉索引树), is a high-performance data structure to cal ...

  6. PHP递归实现层级树状展现数据

    树状数据展现很常用,今天学习了PHP的递归,也来总结总结! PHP代码: function _getTreeList_custom1($data,$parent_id,$depth) { $retur ...

  7. 如何构建JSON数据,JSON数据的格式,JSON数据的获取

    假设你是用$.getJSON();方法获取JSON数据$.getJSON(url,{"Action":"getStudent"},function(data){ ...

  8. vue 树状图数据的循环 递归循环

    在main.js中注册一个子组件 在父组件中引用 树状图的数据格式 绑定一个数据传入子组件,子组件props接收数据 子组件中循环调用组件,就实现了递归循环

  9. 树形DP+DFS序+树状数组 HDOJ 5293 Tree chain problem(树链问题)

    题目链接 题意: 有n个点的一棵树.其中树上有m条已知的链,每条链有一个权值.从中选出任意个不相交的链使得链的权值和最大. 思路: 树形DP.设dp[i]表示i的子树下的最优权值和,sum[i]表示不 ...

随机推荐

  1. 安卓开发_浅谈WebView(转)

    ,有一个功能需要在APP中调用网站 百度了一下,发现需要用WebView来实现 实现方法很容易,我就不在这里写一遍了 ,直接转一下我学习的内容吧 原创作品,允许转载,转载时请务必以超链接形式标明文章  ...

  2. Kotlin入门(12)类的概貌与构造

    上一篇文章提到泛型函数appendString是在类外面定义,这不免使人疑惑,类里面又该怎样定义成员函数呢?为解答这个疑问,接下来的几篇文章将好好描述一下Kotlin如何操作类及其对象,本篇文章先对类 ...

  3. 记录修改安卓5.0系统浏览器UI遇到的部分问题

    碎碎念 今年七月份本科毕业后入职一家会议平板公司,经过一个一个多月的咸鱼培训轮岗生活,接手了几个小任务,本次记录一下其中一个任务:修改安卓5.0系统浏览器UI.刚接到任务的时候,本以为是很简单的一个任 ...

  4. 天池新人赛-天池新人实战赛o2o优惠券使用预测(一)

    第一次参加天池新人赛,主要目的还是想考察下自己对机器学习上的成果,以及系统化的实现一下所学的东西.看看自己的掌握度如何,能否顺利的完成一个分析工作.为之后的学习奠定基础. 这次成绩并不好,只是把整个机 ...

  5. Luncene介绍

    1.Luncene介绍 案例:实现一个文件的搜索功能,通过关键字搜索文件,凡是文件名或文件内容包括关键字文件都需要找出来.还可以根据中文词语进行查询,并且需要支持多个条件查询.Lucene可以解决 数 ...

  6. [20171214]hashcat破解oracle口令.txt

    [20171214]hashcat破解oracle口令.txt hashcat is the world's fastest and most advanced password recovery u ...

  7. 非对称加密与GPG/PGP

    最近浏览博客的时候,经常会看到博主展示出自己的公钥,于是对 GPG/PGP 产生兴趣.下面简单记录相关文章的链接,方便以后了解. 简介: 1991年,程序员Phil Zimmermann为了避开政府的 ...

  8. Linux-lvm逻辑卷管理和提示丢失pv物理卷

    问题描述: 有次在使用lvm扩容的时候,整错了,导致显示如下情况 提示缺少一个pv导致无法继续,pvdisplay的时候查看到unknown 使用pvs查看找到pvname的unknown对应群组ce ...

  9. Maven 变量及常见插件配置详解

    Maven 的 pom.xml 常用 变量 插件 配置 详解 一.变量 - 自定义变量及内置变量 1. 自定义变量 <properties> <project.build.name& ...

  10. 【PAT】B1038 统计同成绩学生(20)(20 分)

    #include<stdio.h> int arr[102]={0};//分数作为自己的下标,注意 int main(){ int N;scanf("%d",& ...