有一個平級的目錄,想轉成層級結構更加明顯的json
title: 目錄1
Level: 1
desPageNum: 1
title: 目錄1.1
Level: 2
desPageNum: 2
title: 目錄1.2
Level: 2
desPageNum: 3
title: 目錄2
Level: 1
desPageNum: 4
title: 目錄2.1
Level: 2
desPageNum: 5
title: 目錄2.1.1
Level: 3
desPageNum: 6
title: 目錄2.1.2
Level: 3
desPageNum: 7
title: 目錄2.2
Level: 2
desPageNum: 11
轉成層級結構更加明顯的json
[
{
"subBookMark": [
{
"subBookMark": [],
"title": "目錄1.1",
"desPageNum": 2
},
{
"subBookMark": [],
"title": "目錄1.2",
"desPageNum": 3
}
],
"title": "目錄1",
"desPageNum": 1
},
{
"subBookMark": [
{
"subBookMark": [
{
"subBookMark": [
],
"title": "目錄2.1.1",
"desPageNum": 6
} ,
{
"subBookMark": [
],
"title": "目錄2.1.2",
"desPageNum": 7
}
],
"title": "目錄2.1",
"desPageNum": 5
},
{
"subBookMark": [],
"title": "目錄2.2",
"desPageNum": 11
},
],
"title": "目錄2",
"desPageNum": 4
},
uj5u.com熱心網友回復:
Level代表層級uj5u.com熱心網友回復:
建個物件然后序列化啊uj5u.com熱心網友回復:
創建一個物體類,對應到你的資料,然后把類序列化成jsonuj5u.com熱心網友回復:
需要下載Newtonsoft.Json.dll,并在專案中參考
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApp6
{
class Program
{
static void Main(string[] args)
{
var treeView = new TreeView()
{
title = "目錄2",
Level = 1,
desPageNum = 4
};
var childrenTree = new TreeChildrenView()
{
title = "目錄2.1",
Level = 2,
desPageNum = 5
};
var childrenTree2 = new TreeChildrenView()
{
title = "目錄2.2",
Level = 2,
desPageNum = 6
};
var chchTree = new Tree2ChildrenView()
{
title = "目錄2.1.1",
Level = 3,
desPageNum = 7
};
childrenTree.Childrens.Add(chchTree);
treeView.Childrens.Add(childrenTree);
treeView.Childrens.Add(childrenTree2);
string json = JsonConvert.SerializeObject(treeView);
Console.WriteLine(json);
Console.ReadLine();
}
}
/// <summary>
/// 第一大類
/// </summary>
public class TreeView
{
public TreeView()
{
this.Childrens = new List<TreeChildrenView>();
}
[JsonProperty("title")]
public string title { get; set; }
[JsonProperty("Level")]
public int Level { get; set; }
[JsonProperty("desPageNum")]
public int desPageNum { get; set; }
[JsonProperty("children")]
public IList<TreeChildrenView> Childrens { get; set; }
}
/// <summary>
/// 第一大類中包含的第二大類
/// </summary>
public class TreeChildrenView
{
public TreeChildrenView()
{
this.Childrens = new List<Tree2ChildrenView>();
}
[JsonProperty("title")]
public string title { get; set; }
[JsonProperty("Level")]
public int Level { get; set; }
[JsonProperty("desPageNum")]
public int desPageNum { get; set; }
[JsonProperty("children")]
public IList<Tree2ChildrenView> Childrens { get; set; }
}
/// <summary>
/// 第二大類包含的第三大類
/// </summary>
public class Tree2ChildrenView
{
[JsonProperty("title")]
public string title { get; set; }
[JsonProperty("Level")]
public int Level { get; set; }
[JsonProperty("desPageNum")]
public int desPageNum { get; set; }
}
}
uj5u.com熱心網友回復:
只支持固定的3層,如地區省市縣這種,若是4層,在第3層中Tree2ChildrenView再加子類。這樣的層結構是否滿足你的需求
uj5u.com熱心網友回復:
public static String SerializeToJsonString(Object data)
{
using (MemoryStream ms = new MemoryStream())
{
var dataContractSerializer = new DataContractJsonSerializer(data.GetType());
dataContractSerializer.WriteObject(ms, data);
byte[] json = ms.ToArray();
return Encoding.UTF8.GetString(json, 0, json.Length);
}
}
public static T DeserializeFromJsonString<T>(string json)
{
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
return (T)ser.ReadObject(ms);
}
}
uj5u.com熱心網友回復:
4樓正解,marc 一個 學習一下uj5u.com熱心網友回復:
類1:public struct data{
public string site;
public string plant;
public string line;
public List<locations> locations;
}
public struct locations
{
public string location;
public string inspectItem;
public string result;
public string ngItem;
}
public string convertJsonReflow(data data, ref bool result)
{
try
{
string strJson = JsonConvert.SerializeObject(data);
result = true;
return strJson;
}
catch
{
result = false;
return string.Empty;
}
}
類2:
類1名 jsonConvertFormat=new 類1名();
string strA = jsonConvertFormat.convertJsonReflow(data, ref blResult);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/82409.html
標籤:C#
上一篇:Visual C++ Redistributable for Visual Studio 2015 安裝失敗,請大神幫忙分析以下什么原因。
