具有Stack结构的JSON反序列化颠倒顺序



使用NewtonSoft JSO序列化程序和堆栈数据结构。当我反序列化结构时,顺序颠倒了。比较数字和ss。

我是不是做错了什么,或者这个问题有什么解决办法。

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
class Example
{
    public static void Main()
    {
        Stack<string> numbers = new Stack<string>();
        numbers.Push("one");
        numbers.Push("two");
        numbers.Push("three");
        numbers.Push("four");
        numbers.Push("five");
         string json = JsonConvert.SerializeObject(numbers.ToArray() );
        // A stack can be enumerated without disturbing its contents. 
        foreach (string number in numbers)
        {
            Console.WriteLine(number);
        }
        Console.WriteLine("nPopping '{0}'", numbers.Pop());
        Console.WriteLine("Peek at next item to destack: {0}",
            numbers.Peek());
        Console.WriteLine("Popping '{0}'", numbers.Pop());
        Stack<string> ss = null;
        if (json != null)
        {
            ss = JsonConvert.DeserializeObject<Stack<string>>(json);
        } 
    }
}

有一个简单的解决方法,但需要一些额外的处理时间。反序列化为List,反转它,然后用它填充堆栈。

List<string> ls = null;
Stack<string> ss = null;
if (json != null)
{
    ls = JsonConvert.DeserializeObject<List<string>>(json);
    ls.Reverse();
    ss = new Stack<string>(ls);
}

相关内容

  • 没有找到相关文章

最新更新