与Newtonsoft解析十进制的多维多维阵列



我正在使用返回这样的JSON的API(简化为相关的道具):

{"坐标":[[[[ - 119.999267578125,38.9594087924542],[-120.08056640625,38.9764924924855394] 56640625,39.2152313091049],[-119.94873046875,39.2152313091049]]]]}

您会注意到这些数字的精度比浮子更高。我创建了以下课程来保持这一点:

    public class JsonParseTest
    {
        public List<List<decimal[,]>> coordinates { get; set; }
    }

我正在使用此代码来解析:

        try
        {
            var json = "{"coordinates":[[[-119.99267578125,38.9594087924542],[-120.08056640625,38.9764924855394],[-120.146484375,39.0789080970648],[-120.08056640625,39.2152313091049],[-119.94873046875,39.2152313091049],[-119.99267578125,38.9594087924542]]]}";
            var obj = JsonConvert.DeserializeObject<JsonParseTest>(json, new JsonSerializerSettings()
            {
                FloatParseHandling = FloatParseHandling.Decimal
            });
        }
        catch (Exception ex)
        {
        }

例外是:

当估算多维阵列时出乎意料的令牌:float。路径'坐标[0] [0] [0]',第1行,位置34。

我做错了什么吗?据我所知,这似乎是Newtonsoft的错误。

您的JsonParseTest应该看起来像:

public class JsonParseTest
{
    public List<decimal[,]> coordinates { get; set; }
}

即。删除一个List<>的水平。您的当前类对应于四个级别的括号嵌套(每个List<>,两个,decimal [,]),但您的JSON只有三个层次。

为了自己发现,您可以将班级的示例序列化为JSON。如果这样做,您会看到额外的筑巢。

相关内容

  • 没有找到相关文章

最新更新