本文共 4095 字,大约阅读时间需要 13 分钟。
通过对需求分析,确定了该项目需要处理两层嵌套的JSON数据结构。为此,打算使用C#和Newtonsoft.json库来实现内容的序列化和反序列化。具体实现逻辑如下:
TestInfo
类,该类包含一个泛型的List<MapInfo>
属性,用于存储第二层的数据。MapInfo
类,该类包含必要的数据字段,例如mapName
、count
、type
等。以下是实现步骤详细说明:
MapInfo.cs
using System;using System.Collections.Generic;namespace JsonDemo{ public class MapInfo { public string mapName { get; set; } public string type { get; set; } public string count { get; set; } public string url { get; set; } public string progress { get; set; } public string waitCount { get; set; } }}
TestInfo.cs
using System.Collections.Generic;using Newtonsoft.Json;namespace JsonDemo{ public class TestInfo { public string XMText { get; set; } public string XMTYPE { get; set; } public string XMCount { get; set; } public ListmapInfos { get; set; } public TestInfo() { mapInfos = new List (); } }}
以下是完整的程序实现,用于生成嵌套的JSON文件:
using JsonDemo;using Newtonsoft.Json;using System;using System.Collections.Generic;using System.IO;using System.Linq;namespace JsonHelper{ public class Program { public static void Main(string[] args) { ListtestInfos = new List (); // 创建说明信息 TestInfo testInfo1 = new TestInfo(); testInfo1.XMText = "综合交通1"; testInfo1.XMTYPE = "01"; testInfo1.XMCount = "108"; TestInfo testInfo2 = new TestInfo(); testInfo2.XMText = "综合交通2"; testInfo2.XMTYPE = "02"; testInfo2.XMCount = "109"; // 添加第一个信息 List mapInfos1 = new List (); MapInfo mapInfo1_1 = new MapInfo(); mapInfo1_1.mapName = "市重点交通"; mapInfo1_1.type = "32"; mapInfo1_1.count = "20"; mapInfo1_1.url = "../ProjectManage/Pagessilding/Zhonghejiaotong/Zhonghetra_list.aspx?type=0101"; mapInfo1_1.progress = "52.61"; mapInfo1_1.waitCount = "27"; MapInfo mapInfo1_2 = new MapInfo(); mapInfo1_2.mapName = "支路网建设"; mapInfo1_2.type = "32"; mapInfo1_2.count = "20"; mapInfo1_2.url = "../ProjectManage/Pagessilding/Zhonghejiaotong/Zhonghetra_list.aspx?type=0111"; mapInfo1_2.progress = "52.61"; mapInfo1_2.waitCount = "27"; mapInfos1.Add(mapInfo1_1); mapInfos1.Add(mapInfo1_2); testInfo1.mapInfos = mapInfos1; // 添加第二个信息 List mapInfos2 = new List (); MapInfo mapInfo2_1 = new MapInfo(); mapInfo2_1.mapName = "市重点交通2"; mapInfo2_1.type = "32"; mapInfo2_1.count = "20"; mapInfo2_1.url = "../ProjectManage/Pagessilding/Zhonghejiaotong/Zhonghetra_list.aspx?type=1101"; mapInfo2_1.progress = "52.61"; mapInfo2_1.waitCount = "30"; MapInfo mapInfo2_2 = new MapInfo(); mapInfo2_2.mapName = "支路网建设2"; mapInfo2_2.type = "32"; mapInfo2_2.count = "20"; mapInfo2_2.url = "../ProjectManage/Pagessilding/Zhonghejiaotong/Zhonghetra_list.aspx?type=1111"; mapInfo2_2.progress = "52.61"; mapInfo2_2.waitCount = "30"; mapInfos2.Add(mapInfo2_1); mapInfos2.Add(mapInfo2_2); testInfo2.mapInfos = mapInfos2; // 加入集合 testInfos.Add(testInfo1); testInfos.Add(testInfo2); // 序列化为JSON string jsonContent = Newtonsoft.Json.JsonConvert.SerializeObject(testInfos); // 保存文件 bool success = SaveFile(@"e:\Zhonghejiaotong.json", jsonContent); Console.WriteLine("保存情况:" + success); } private static bool SaveFile(string path, string contents) { bool success = false; using (FileStream fs = new FileStream(path, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.ReadWrite)) { using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8)) { sw.WriteLine(contents); success = true; } } return success; } }}
####Notice of Information
如果需要获取更多信息或建议,请随时联系我。
转载地址:http://zffjz.baihongyu.com/