簡體   English   中英

反序列化數組不支持JSON反序列化類型

[英]JSON Deserialization Type is not supported for deserialization of an array

我已經閱讀了關於反序列化錯誤的其他兩篇文章,但我沒有得到任何結論,所以我發布了自己的問題。

我有一個返回JSON的WCF服務。 在對特定類型進行反序列化時,它會失敗。

為了讓您輕松復制錯誤,我將下面的JSON硬編碼與調用一起。

基本上你應該能夠復制/粘貼下面的代碼並看到它失敗。

消費者需要將其反序列化為工作對象。 s。反序列化失敗,並顯示標題中指出的錯誤消息。

注意:我意識到我的JSON中有斜杠。 那些是為了方便逃避報價。 謝謝。

示例代碼:

  var s = new JavaScriptSerializer();

        var jstr =
            "[{\"UserId\":1,\"WorkoutId\":1,\"WorkoutInfo\":[\"Step 1\",\"Step 2\"]},{\"UserId\":2,\"WorkoutId\":2,\"WorkoutInfo\":[\"Step 1a\",\"Step 2a\"]},{\"UserId\":5,\"WorkoutId\":0,\"WorkoutInfo\":[\"new work1\",\"new work 1\",\"new work 1\"]}]";

        Workout blah = s.Deserialize<Workout>(jstr);
        var response = ServicePOST<Workout>("AddUserWorkout", workout);

和鍛煉課程:

public class Workout
{
    public int UserId { get; set; }
    public List<string> WorkoutInfo { get; set; }
}

問題是你告訴序列化器它只是一個Workout ,而不是它們的列表/數組。 這有效:

var blah = s.Deserialize<List<Workout>>(jstr);

這與您的問題沒有直接關系,但如果可能的話,我建議您使用Json.NET而不是JavaScriptSerializer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM