我有一个具有单个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无法反序列化为多维数组([,]),即使它应该能够看到这是属性的类型。
它看起来像一个实现错误,但考虑到这种情况的基本情况,它似乎相当令人惊讶。我错过了什么吗?