【发布时间】:2018-06-23 11:18:01
【问题描述】:
我从套接字连接接收到未知字符串。它始终遵循格式
{
“eventType”: “playerListUpdate”
“data”: “...changes...”
}
我正在反序列化它使用:
var message = JsonConvert.DeserializeObject<NetworkMessage>(data);
NetworkMessage 看起来像这样:
public class NetworkMessage
{
public string data;
public string eventType;
}
我的问题是,有时数据属性保留为字符串,而有时它包含具有更复杂数据的数组(想想 DB 结果)。因此,当我尝试用数据中的数组反序列化字符串时,它会失败。
更复杂数据的一个例子是
{"eventType":"latestPlayersList","data":[{"id":1,"firstName":"Harry"},{"id":2,"firstName":"Ted"},{"id":3,"firstName":"Michael"},{"id":4,"firstName":"Mike"}],"from":"server"}
如何根据 eventType 的值将 JSON 字符串反序列化为不同的 VO?
【问题讨论】:
-
请展示一个复杂数据的例子。
-
抱歉,添加进去了。
-
你用反射检查类型了吗?
-
是
data的类型,基于eventType中的值?