如何将层次结构列表转换为 json

发布于 2024-11-25 19:04:09 字数 651 浏览 1 评论 0原文

我正在使用 ASP.NET MVC3

我有一个这种类型的层次结构列表:

public class TreeNode
{
public int id;
public int title;
public int parentid;
}
var myHierarchyList=new List<TreeNode>();
//(the tree has a root with id=1 and parentid=0 and title=root)

我需要一个函数从 myHierarchyList 生成 json 数据。像这样的事情:

[{
    "id":1,
    "text":"cat1",
    "childrens":[{
        "id":2,
        "text":"cat2"
    },{
        "id":3,
        "text":"cat3",
        "childrens":[{
            "id":4,
            "text":"cat4"
        },{
            "id": 8,
            "text":"cat5"
        }]
    }]
}]

请帮助我。 谢谢。

I am using ASP.NET MVC3

I have a hierarchy list with this type:

public class TreeNode
{
public int id;
public int title;
public int parentid;
}
var myHierarchyList=new List<TreeNode>();
//(the tree has a root with id=1 and parentid=0 and title=root)

I need a function to generate json data from myHierarchyList. somthing like this:

[{
    "id":1,
    "text":"cat1",
    "childrens":[{
        "id":2,
        "text":"cat2"
    },{
        "id":3,
        "text":"cat3",
        "childrens":[{
            "id":4,
            "text":"cat4"
        },{
            "id": 8,
            "text":"cat5"
        }]
    }]
}]

Please help me.
Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

破晓 2024-12-02 19:04:09

看看复合设计模式。这允许您构建不同对象的层次结构并递归循环并使用 stringbuilder 生成 xml、json html 等。

Look at the composite design pattern. This allows you to build up the hierarchy of different objects and recursively loop through and use a stringbuilder to generate xml, json html etc.

余厌 2024-12-02 19:04:09

也许是这样的:

namespace MyNameSpace
{
    using System.Runtime.Serialization.Json;
    using System.IO;
    using System.Text;

    public static class JsonExtensions
    {
        public static string JsonSerialize<T>(this T obj) where T : class
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
            using (MemoryStream stream = new MemoryStream())
            {
                serializer.WriteObject(stream, obj);
                return Encoding.Default.GetString(stream.ToArray());
            }
        }

        public static T JsonDeserialize<T>(this T obj, string json) where T : class
        {
            using (MemoryStream stream = new MemoryStream(Encoding.Unicode.GetBytes(json)))
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
                return serializer.ReadObject(stream) as T;
            }
        }
    }
}


...................


void somefuntion()
{
    MyObject myObject = new MyObject()
    ...Do stuff to myObject .........
    ............

    // Get myObject as a Json String
    string json = myObject.JsonSerialize();
}

Maybe something like:

namespace MyNameSpace
{
    using System.Runtime.Serialization.Json;
    using System.IO;
    using System.Text;

    public static class JsonExtensions
    {
        public static string JsonSerialize<T>(this T obj) where T : class
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
            using (MemoryStream stream = new MemoryStream())
            {
                serializer.WriteObject(stream, obj);
                return Encoding.Default.GetString(stream.ToArray());
            }
        }

        public static T JsonDeserialize<T>(this T obj, string json) where T : class
        {
            using (MemoryStream stream = new MemoryStream(Encoding.Unicode.GetBytes(json)))
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
                return serializer.ReadObject(stream) as T;
            }
        }
    }
}


...................


void somefuntion()
{
    MyObject myObject = new MyObject()
    ...Do stuff to myObject .........
    ............

    // Get myObject as a Json String
    string json = myObject.JsonSerialize();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文