乍一看,它们似乎是同一回事。因为JsonObject : IDictionary<string, string>
. 但是,当我尝试反序列化以下示例数据时,会得到不同的结果:
var str1 = "{\"employees\": [" +
"{ \"firstName\":\"John\" , \"lastName\":\"Doe\" }, " +
"{ \"firstName\":\"Anna\" , \"lastName\":\"Smith\" }, " +
"{ \"firstName\":\"Peter\" , \"lastName\":\"Jones\" }" +
"]}";
//first try
public static JsonObject DeserializeJsonString(this string s) {
return JsonObject.Parse(s);
}
//second try
public static T DeserializeJson<T>(this string s) where T : class {
return JsonSerializer.DeserializeFromString<T>(s);
}
第一次尝试JsonObject.Parse()
:
- 工作正常并正确解析对象。
第二次尝试JsonSerializer.DeserializeFromString<Dictionary<string, string>>()
:
- 给我“employees”和“[{”的键值对,这似乎是实际值的开始片段,其余数据块丢失。
为什么我有第二种方式的不良数据?
编辑 - - - - - - - - - - - - - - - - - - - - - - - - - ------
不再是问题。
最新版本的 SS 已修复此问题。现在它可以<string, string>
很好地解析字典了。