递归循环JSON
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; /// <summary>
/// JsonHelper 的摘要说明
/// </summary>
public class JsonHelper
{
/// <summary>
/// 转换JSON对象
/// </summary>
/// <param name="company"></param>
/// <returns></returns>
public static string ConvertToJson(Company company)
{
string json = "CompanyName:\"" + company.CompanyName + "\",ContactName:\"" + company.ContactName + "\",City:\"" + company.City + "\",CustomerID:\"" + company.CustomerID + "\",children:{0}";
return json;
} /// <summary>
/// 转换JSON对象集合,包含子集,递归加载
/// </summary>
/// <param name="companyList"></param>
/// <returns></returns>
public static string ConvertToJson(List<Company> companyList)
{
string json = "[";
//获取第一级目录
List<Company> rootList = companyList.Where(x => string.IsNullOrEmpty(x.Pid)).ToList<Company>();
foreach (Company root in rootList)
{
string js = ConvertToJson(root);
string children="";
children = DiGui(companyList, children, root.CustomerID);
json += "{"+string.Format(js, children) + "},";
}
if (json.LastIndexOf(",") < 1)
{
json += "]";
}
else
{
json = json.Substring(0, json.Length - 1) + "]";
}
return json.Replace(",children:[]", "");
} /// <summary>
/// 递归调用添加包含子集的JSON数组
/// </summary>
private static string DiGui(List<Company> companyList,string children,string pid)
{
children = "[";
List<Company> childerList = companyList.Where(x => x.Pid.ToUpper() == pid.ToUpper()).ToList<Company>();
foreach (Company item in childerList)
{
string js = ConvertToJson(item);
string cd = "";
cd = DiGui(companyList, cd, item.CustomerID);
children += "{"+string.Format(js, cd) + "},";
}
if (children.LastIndexOf(",") < 1)
{
children += "]";
}
else
{
children = children.Substring(0, children.Length - 1) + "]";
}
return children;
} }
递归循环JSON的更多相关文章
- C# ASP.NET递归循环生成嵌套json结构树
1. 建立用来保存树结构数据的目标对象 public class TreeObject { public string name { get; set; } public string value { ...
- c# 使用递归 循环遍历导航树结构 并解析
1.数据书库结构 1 家用电器 0 一级菜单 2 手机.数码.京东通信 0 一级菜单 3 电脑.办公 0 一级菜单 4 家具.家居.厨房 0 一级菜单 5 男装.女装.童装.内衣 0 一级菜单 6 个 ...
- 递归遍历JSON树
递归遍历JSON树 前几天有个人问我,json串的层级无限深,但在json串中的key是已知的,在json串中的value,有些事Object,有些是Array,如何把这些层级无限深的key所对应的v ...
- vue 树状图数据的循环 递归循环
在main.js中注册一个子组件 在父组件中引用 树状图的数据格式 绑定一个数据传入子组件,子组件props接收数据 子组件中循环调用组件,就实现了递归循环
- JavaScript通过递归合并JSON
通过递归合并JSON: function mergeJSON(o, n) { let oType = Object.prototype.toString.call(o); let nType = Ob ...
- C# TreeView,递归循环数据加载到treeView1中
TblAreaBLL bll = new TblAreaBLL(); private void button1_Click(object sender, EventArgs e) { LoadData ...
- JavaScript 递归遍历json串获取相关数据
递归遍历json串获取相关数据 by:授客 QQ:1033553122 1. 测试数据 // 导航菜单 [ { id: 1, parentId: 0, parentName: null, na ...
- JavaScript通过父节点ID递归生成JSON树
JavaScript通过父节点ID递归生成JSON树: · 实现思路:通过递归实现(第一次递归的时候查询出所有的父节点,然后通过当前父节点id不断地去查询所有子节点,直到递归完毕返回) · 代码示 ...
- struts-hibernate-ajax完成区县和街道级联下拉框功能(二补充使用json解析list结果集,ajax循环json层级处理)
针对<struts-hibernate-ajax完成区县和街道级联下拉框功能>进行补充,上一篇中,要在action中拼接JSON格式字符串,很容易手抖.直接用json处理一下转成json格 ...
随机推荐
- js不能执行,IE处理方法
一.如果你的ie不能打开js脚本(连系统里所有的js文件都不运行,网页上的js广告或好多页面都显示不了),请按一下步骤进行排查与解决: 1.查看是否IE的安全里面禁止了JS的运行: 将工具=>i ...
- BZOJ3451: Tyvj1953 Normal
题解: 好神的一道题.蒟蒻只能膜拜题解. 考虑a对b的贡献,如果a是a-b路径上第一个删除的点,那么给b贡献1. 所以转化之后就是求sigma(1/dist(i,j)),orz!!! 如果不是分母的话 ...
- hdu 3033 I love sneakers!
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- linux mkfs命令参数及用法详解---linux格式化文件系统命令(包括swap分区)
mkfs 命令 linux格式化磁盘命令 linux mkfs 指令:mkfs 使用权限 : 超级使用者 使用方式 : mkfs [-V] [-t fstype] ...
- STL sort()函数
C++之所以得到这么多人的喜欢,是因为它既具有面向对象的概念,又保持了C语言高效的特点.STL 排序算法同样需要保持高效.因此,对于不同的需求,STL提供的不同的函数,不同的函数,实现的算法又不尽相同 ...
- 【原】实验室签到PHP版本
表单 <html> <body> <h1>实验室自动签到测试</h1> <h2>输入学号和登录密码(建议自己改过密码后再来录入您的数据)&l ...
- DNS (二)协议
报文字段含义: 标识字段 由客户程序设置并由服务器返回结果.客户程序通过它来确定响应与查询是否匹配. 标志字段 协商具体的通信方式和反馈通信状态随后的 4个16 bit字段说明最后 4个变长字段中包含 ...
- 【暑假】[深入动态规划]UVa 1412 Fund Management
UVa 1412 Fund Management 题目: UVA - 1412 Fund Management Time Limit: 3000MS Memory Limit: Unknown ...
- C++多线程框架-----Mutex互斥和Sem信号量
互斥和信号量是多线程编程的两个基础,其原理就不详细说了,大家去看看操作系统的书或者网上查查吧. 对于互斥的实现,无论什么操作系统都离不开三个步骤 1.初始化互斥锁 2.锁操作 3.解锁操 ...
- 【hdu3065】病毒侵袭持续中
题意: 求目标串中每个模式串出现几次 目标串长度<=2000000 模式串<=1000个 模式串长度<=50 题解: 这不就是AC自动机的模板题吗! 求fail树中模式串的子树中有几 ...