2017-08-14 45 views
-1

我有一個這樣的字符串轉義字符的字符串:反序列化使用JsonConvert

"[ 
    { 
    \"SomeProperty\": 22 
    } 
]" 

我試圖把它反序列化到已知類型的列表:

 string toProcess = [email protected]"[{text}]".Replace("\n", ","); 
     toProcess = Regex.Unescape(toProcess); 
     List<KnownType> objectList = JsonConvert.DeserializeObject<List<KnownType>>(toProcess); 

但是我看到它試圖對包含\"字符的字符串進行反序列化,並且它與Cannot deserialize the current JSON object一起失敗。我如何正確反序列化這個?

+0

您的字符串不是有效的JSON。所以你不能反序列化它。您可以使用https://jsonlint.com/來驗證這一點。此外,有效的JSON字符串在反序列化之前不需要任何操作。因此我認爲你的方法是不正確的。 – Christos

+1

你確定你的json完全像這樣,還是你在調試器窗口中看到的? –

+0

@Christos我正在使用的字符串不是有效的JSON。我試圖使其有效JSON。 – SB2055

回答

-1

你不需要string toProcess = [email protected]"[{text}]".Replace("\n", ",");

string text = @"[ 
    { 
    \""SomeProperty\"": 22 
    } 
]"; 


text = Regex.Unescape(text); 
var objectList = JsonConvert.DeserializeObject<List<KnownType>>(text); 

Console.WriteLine(objectList[0].SomeProperty);//22 

此代碼按預期工作。

+0

我沒有有效的JSON字符串 - 我有一個可憎的問題,我正在糾正,包括'\「'。''''''我也有內聯'\ n'而不是逗號 - 所以第一行似乎是必需的。 – SB2055

+0

@ SB2055 \「」翻譯成文字字符串\「,所以我不確定你的意思。 –