【发布时间】:2015-07-26 17:37:24
【问题描述】:
我一直在使用泛型和 Newtonsoft.Json 的 JsonConvert.DeserializeObject<TSource>(jsonString) 进行扩展方法
序列化按预期工作
string value = string.Empty;
value = JsonConvert.SerializeObject(null); //"null"
value = JsonConvert.SerializeObject("null"); //"null"
value = JsonConvert.SerializeObject("value"); //"value"
value = JsonConvert.SerializeObject(""); //""
但是当尝试反序列化时
string result = string.Empty;
result = JsonConvert.DeserializeObject("null"); //null, ok
result = JsonConvert.DeserializeObject("value"); //throwing error, expecting "value"
result = JsonConvert.DeserializeObject(""); //throwing error, expecting string.empty
错误:解析值时遇到意外字符:v. Path '', line 0, position 0.
现在我在扩展方法上使用TSource : new (),因此任何字符串返回类型都将被限制为
public static TSource ExecuteScriptForData(this IJavaScriptExecutor javaScriptExecutor, string script, params object[] args) where TSource : new ()
这不允许我在TSource 上使用IList、IPerson 或ReadOnlyCollection 等接口
现在有什么方法可以配置反序列化器,以便它能够在序列化器生成时反序列化字符串?
【问题讨论】:
-
您尝试反序列化的内容不是有效的 json。如果它只是一个简单的字符串,为什么不按原样存储它。也许只有我一个人,但我没有看到您要解决的问题。
-
@Nasreddine 是的,它们不是有效的 json,但结果 = JsonConvert.DeserializeObject("null");正在工作,所以我想可能有某种方法。如果正如你所指出的,序列化不应该也会抛出错误吗!
标签: c# json serialization json-deserialization