博客
关于我
C#实现对象为Json嵌套数组文件的创建
阅读量:494 次
发布时间:2019-03-07

本文共 4095 字,大约阅读时间需要 13 分钟。

Json嵌套数组文件开发实例

一、开发思路说明

通过对需求分析,确定了该项目需要处理两层嵌套的JSON数据结构。为此,打算使用C#和Newtonsoft.json库来实现内容的序列化和反序列化。具体实现逻辑如下:

  • 第一层嵌套:创建一个TestInfo类,该类包含一个泛型的List<MapInfo>属性,用于存储第二层的数据。
  • 第二层嵌套:创建一个MapInfo类,该类包含必要的数据字段,例如mapNamecounttype等。
  • 数据绑定:通过Newtonsoft.json库,将C#对象序列化为JSON格式,再将其保存到指定文件中。
  • 以下是实现步骤详细说明:

    二、具体实现步骤

    2.1 创建基础类: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; }    }}
    2.2 创建第一层嵌套类: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 List
    mapInfos { get; set; } public TestInfo() { mapInfos = new List
    (); } }}
    2.3 实现对象并生成JSON文件

    以下是完整的程序实现,用于生成嵌套的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)        {            List
    testInfos = 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/

    你可能感兴趣的文章
    Java 天气预报WebService
    查看>>
    Spring中bean的加载过程
    查看>>
    mysql里Date类型的处理
    查看>>
    MySQL索引实现
    查看>>
    redis中RDB和AOF的区别
    查看>>
    内核线程、轻量级进程、用户线程的区别和联系
    查看>>
    《STM32从零开始学习历程》——CAN相关结构体
    查看>>
    Dubbo笔记 ② : 架构概述
    查看>>
    ROS参数服务器
    查看>>
    malloc分配0个字节
    查看>>
    new与delete细节探索
    查看>>
    vim配置
    查看>>
    原生Javascript实现New方法
    查看>>
    Promise串行执行
    查看>>
    解决VS2012的 未能将网站配置为使用ASP.NET4.5问题
    查看>>
    Tomcat中jdk版本与项目版本不一致造成404错误以及Eclipse修改jdk版本
    查看>>
    Spring通过工厂方法配置Bean
    查看>>
    Spring事务的两种常用传播方式
    查看>>
    配置SpringMVC中的视图解析器
    查看>>
    Redis6大基础数据结构以及在spring中的常用命令
    查看>>