Windows phone 7 使用JSON.Net反序列化时发生ArgumentException

Windows phone 7 使用JSON.Net反序列化时发生ArgumentException,windows-phone-7,json.net,Windows Phone 7,Json.net,我有一个目标如下: public class Foo { public Dictionary<string, List<double?>> Bar { get; set; } } 序列化后myJson的内容(删除双引号转义) 在标准Windows中使用.NET4.5上的Json.NET4.5.11对我来说效果很好。这是我使用的程序(如下)。您是否可以尝试在您的环境中运行这段代码,看看它是否有效?如果是这样,那么您的异常肯定来自其他地方。如果不是,那么这似乎表明W

我有一个目标如下:

public class Foo
{
    public Dictionary<string, List<double?>> Bar { get; set; }
}
序列化后myJson的内容(删除双引号转义)


在标准Windows中使用.NET4.5上的Json.NET4.5.11对我来说效果很好。这是我使用的程序(如下)。您是否可以尝试在您的环境中运行这段代码,看看它是否有效?如果是这样,那么您的异常肯定来自其他地方。如果不是,那么这似乎表明Windows和Windows Phone环境之间存在差异

class Program
{
    static void Main(string[] args)
    {
        Foo myFoo = new Foo()
        {
            Bar = new Dictionary<string, List<double?>>() 
            {
                { "Flim", new List<double?>() { 0, 0.2, null, 0.9 } },
                { "Flam", new List<double?>() { 0.0, 0.1, null, null } },
            }
        };

        string json = JsonConvert.SerializeObject(myFoo);

        Console.WriteLine(json);

        Foo foo2 = JsonConvert.DeserializeObject<Foo>(json);

        foreach (KeyValuePair<string, List<double?>> kvp in foo2.Bar)
        {
            Console.Write(kvp.Key);
            Console.Write(":");
            string sep = " {";
            foreach (double? d in kvp.Value)
            {
                Console.Write(sep);
                Console.Write(d.HasValue ? d.Value.ToString() : "null");
                sep = ", ";
            }
            Console.WriteLine("}");
        }

    }

    public class Foo
    {
        public Dictionary<string, List<double?>> Bar { get; set; }
    }

}

请显示您正试图反序列化的JSON。使
列表
不可为空,即
列表
-看起来是空值导致了问题。不幸的是,我需要它可以为空……我创建了一个全新的项目,并包含了通过NuGet提供的最新JSON(5.0.5)。我将代码复制到一个按钮回调中<代码>控制台.WriteLine行被注释掉,因为它们在Windows Phone项目中没有任何作用。我得到了相同的参数异常-这可能是由于JSON.Net版本或Windows Phone环境的不同…不幸的是,我不是Windows Phone专家。我下载了Windows Phone 7.1 SDK,并试图设置一个“Hello World”应用程序,以便我可以尝试在与您相同的环境中重现该问题,但在我的测试项目中,只需单击一个简单的按钮,我就遇到了问题!当我有更多的时间时,我会尝试更多地玩它,也许是在周末。
{"Bar":{"Flim":[0.0,0.2,null,0.9],"Flam":[0.0,0.1,null,null]}}
class Program
{
    static void Main(string[] args)
    {
        Foo myFoo = new Foo()
        {
            Bar = new Dictionary<string, List<double?>>() 
            {
                { "Flim", new List<double?>() { 0, 0.2, null, 0.9 } },
                { "Flam", new List<double?>() { 0.0, 0.1, null, null } },
            }
        };

        string json = JsonConvert.SerializeObject(myFoo);

        Console.WriteLine(json);

        Foo foo2 = JsonConvert.DeserializeObject<Foo>(json);

        foreach (KeyValuePair<string, List<double?>> kvp in foo2.Bar)
        {
            Console.Write(kvp.Key);
            Console.Write(":");
            string sep = " {";
            foreach (double? d in kvp.Value)
            {
                Console.Write(sep);
                Console.Write(d.HasValue ? d.Value.ToString() : "null");
                sep = ", ";
            }
            Console.WriteLine("}");
        }

    }

    public class Foo
    {
        public Dictionary<string, List<double?>> Bar { get; set; }
    }

}
{"Bar":{"Flim":[0.0,0.2,null,0.9],"Flam":[0.0,0.1,null,null]}}
Flim: {0, 0.2, null, 0.9}
Flam: {0, 0.1, null, null}