使用ServiceStack从JSON反序列化多维数组失败

时间:2015-10-02 09:02:34

标签: c# json servicestack deserialization servicestack-text

我有一个具有单个double[,]属性的对象,该属性使用ServiceStack ToJson()方法序列化,如下所示:

{"xy":[[-2.9774,-2.0682],[-1.1378,2.7118]]}

但是我无法使用Parameters将其反序列化回我的对象​​类型("abovestring".FromJson<Parameters>()),因为它会引发以下异常:

System.Runtime.Serialization.SerializationException: Failed to set property 'xy' with '[[-2.9774,-2.0682],[-1.1378,2.7118]]' ---> System.FormatException: Input string was not in a correct format.
   at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
   at ServiceStack.Text.Common.DeserializeBuiltin`1.<GetParseFn>b__a(String value)
   at ServiceStack.Text.Common.JsReader`1.<>c__DisplayClassa`1.<GetCoreParseFn>b__7(String value)
   at ServiceStack.Text.Common.DeserializeArrayWithElements`2.ParseGenericArray(String value, ParseStringDelegate elementParseFn)
   at ServiceStack.Text.Common.DeserializeArray`2.<>c__DisplayClass3.<GetParseFn>b__0(String value)
   at ServiceStack.Text.Common.DeserializeTypeRefJson.StringToType(TypeConfig typeConfig, String strType, EmptyCtorDelegate ctorFn, Dictionary`2 typeAccessorMap)
   --- End of inner exception stack trace ---
   at ServiceStack.Text.Common.DeserializeTypeRefJson.StringToType(TypeConfig typeConfig, String strType, EmptyCtorDelegate ctorFn, Dictionary`2 typeAccessorMap)
   at ServiceStack.Text.Common.DeserializeType`1.<>c__DisplayClass3.<GetParseMethod>b__1(String value)
   at ServiceStack.Text.Json.JsonReader`1.Parse(String value)
   at ServiceStack.Text.JsonSerializer.DeserializeFromString[T](String value)
   at ServiceStack.StringExtensions.FromJson[T](String json)

目标Parameters类是:

public class Parameters {
   public double[,] xy { get; set; }
}

如果我将属性类型更改为double [] []它可以工作,但是我没有往返功能。似乎ServiceStack无法反序列化为多维数组([,]),即使它应该能够看到这是属性的类型。

它看起来像一个实现错误,但考虑到这种情况的基本情况,它似乎相当令人惊讶。我错过了什么吗?

0 个答案:

没有答案