一見同じように見えます。なぜなら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()
:
- 正常に動作し、オブジェクトを正しく解析します。
2回目の試行JsonSerializer.DeserializeFromString<Dictionary<string, string>>()
:
- 「employees」と「[{」のキーと値のペアを提供します。これは、実際の値の最初のフラグメントであり、残りのデータチャンクが欠落しているようです。
2 番目の方法でデータが正しくないのはなぜですか?
編集 - - - - - - - - - - - - - - - - - - - - - - - - - ------
もはや問題ではありません。
SS の最新バージョンでは、この問題にパッチが適用されています。これで Dictionary を問題なく解析できるようになり<string, string>
ました。