C#学习教程:ServiceStack.Text将json反序列化为一个对象,总是将其转换为字符串并使用引号来表现怪异分享怎么办:我有json对象,其值可以是字符串、整数、双精度或任何列表这些。我正在尝试将这些json字符串反序列化为C#对象,但由于它们可以是多种类型,所以我只能使用通用对象,而不是强类型对象。我的问题:似乎ServiceStack.Text.JsonSerializer.DeserializeFromString(jsonString)函数对T=object的行为很奇怪。它始终将事物视为字符串,并且不适用于引号。这是一个例子:stringjson1="[1]";字符串json2="[1,2]";stringjson3="['你好']";字符串json4="['你好','世界']";字符串json5="["你好"]";stringjson6="["hello","world"]";对象o1=JsonSerializer。DeserializeFromString(json1);对象o2=JsonSerializer。DeserializeFromString(json2);对象o3=JsonSerializer.DeserializeFromString(json3);对象o4=JsonSerializer.DeserializeFromString(json4);对象o5=JsonSerializer.DeserializeFromString(json5);对象o6=JsonSerializer.DeserializeFromString(json6);预期的基础对象:对象类型Listvalue1]o1o2List[1,2]o3List['hello']o4List['hello','world']o5List["hello"]o6List["hello","world"]实际相关对象:对象类型值o1String"[1]"o2String"[1,2]"o3String"['hello']"o4String"['hello','world']"o5String"["o6String"["供参考,使用Newtonsoft.Json对应的代码块将底层对象解释为一个Netwonsoft.Json.Link.JArray。就目前而言,我必须确保在json中使用单引号,然后反序列化递归提取的任何字符串,直到正确提取所有内容。有什么方法可以使我的行为与使用ServiceStack.Text的行为相同?ServiceStack的文本序列化器通过将JSON转换为指定的模式来工作,当您使用对象时它无法提前推断类型,因此为了在运行时执行此操作,ServiceStack的JSON序列化器需要发出专有的__type元数据属性,告诉反序列化器将其反序列化为什么。这仅针对JSON对象文字而不是数组发出,这就是它在这里不起作用的原因。下面介绍一些数组反序列化的方法:以上是C#学习教程:ServiceStack.Text反序列化json为对象,总是转为字符串,用引号表示奇葩全部内容分享,如果对大家有用,需要的了解更多C#学习教程,希望大家多多关注—stringjson6="["hello","world"]";varlist=json6.FromJson>();列表.PrintDump();vararray=json6.FromJson();array.PrintDump();vararrayObj=json6.FromJson();arrayObj.PrintDump();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
