使用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);
}