Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反序列化Json会导致目标类型中的空列表_C#_Json.net - Fatal编程技术网

C# 反序列化Json会导致目标类型中的空列表

C# 反序列化Json会导致目标类型中的空列表,c#,json.net,C#,Json.net,当我尝试使用Newtonsoft JSON反序列化以下JSON时,我要反序列化的目标类型对于列表属性FoodPositions总是返回null。该类的其他属性不返回null: JSON示例:{baxterPosition:2x5,baxterFoodLevel:18,mousePosition:5x0,mouseFoodLevel:18,foodPositions:[0x0,5x5],totalRounds:2,gameComplete:false} 以下是我要反序列化到的类: class B

当我尝试使用Newtonsoft JSON反序列化以下JSON时,我要反序列化的目标类型对于列表属性FoodPositions总是返回null。该类的其他属性不返回null:

JSON示例:{baxterPosition:2x5,baxterFoodLevel:18,mousePosition:5x0,mouseFoodLevel:18,foodPositions:[0x0,5x5],totalRounds:2,gameComplete:false}

以下是我要反序列化到的类:

 class BaxterResult
    {
        [JsonProperty("baxterPosition")]
        public string BaxterPosition { get; set; }
        [JsonProperty("baxterFoodLevel")]
        public int BaxterFoodLevel { get; set; }
        [JsonProperty("mousePosition")]
        public string MousePosition { get; set; }
        [JsonProperty("mouseFoodLevel")]
        public int MouseFoodLevel { get; set; }
        [JsonProperty("foodPositions")]
        public List<string> FoodPositions { get; set; }
        [JsonProperty("totalRounds")]
        public int TotalRounds { get; set; }
        [JsonProperty("gameComplete")]
        public bool GameComplete { get; set; }
    }
以下是对反序列化的调用:

BaxterResult BaxterLocal = JsonConvert.DeserializeObject<BaxterResult>(reader.ReadToEnd());

在进一步测试之后,我确定在使用Xamarin窗体和Xamarin Live时,问题实际上是Visual Studio调试器中的一个bug。列表FoodPositions实际上已填充。看见感谢所有人的反馈——我发现填充列表的方法是添加一个foreach来枚举列表,我发现它迭代了正确的次数。

将其保存到一个变量中,并确保它具有您所期望的:reader.ReadToEnd。可能它没有FoodPositions无法使用提供的示例重现。请看,这不是对原始问题的回答,但您应该知道应该将FoodPositions存储为List而不是List,因为它是类型安全的。将数字保存为字符串迟早会使您失败。感谢您的反馈。我继续前进,转换成分数@john我在您提供的rextester中使用了调整后的代码,并获得了所需的结果。然后,我使用了相同的代码并在我的应用程序中使用,FoodPositions为null。我的环境中一定有什么东西导致了这种情况。我会继续挖掘。