2014-06-13 225 views
-2

我試圖使用返回以下JSON結構的API:反序列化JSON陣列

{ 
    standardList: [2] 
    0: { 
     created: "/Date(1393282097000)/" 
     createdBy: "User Name" 
     envId: "1234-1234-1234" 
     extension: "nbsq" 
     id: "4826-5680-3258" 
     modified: "/Date(1328572097000)/" 
     modifiedBy: "user Name" 
     name: "File Name Here" 
     officialVer: 1 
     size: 1 
     syncMod:357275 
     url: "https://www.example.com" 
     versions: 1 
    }- 
    1: { 
     created: "/Date(139345635000)/" 
     createdBy: "User Name" 
     envId: "2345-2345-2345" 
     extension: "nbsq" 
     id: "4956-4538-4321" 
     modified: "/Date(13934425017000)/" 
     modifiedBy: "User Name" 
     name: "File Name Here" 
     officialVer: 1 
     size: 1 
     syncMod: 2812280243 
     url: "https://www.example.com" 
     versions: 1 
    } 
} 

我需要反序列化standardList的內容,並設置ID和名稱值。我有一個模型:

public class FolderList 
{ 
    [JsonProperty("standardList")] 
    public Folder FolderList { get; set; } 
} 

public class Folder 
{ 
    [JsonProperty("envId")] 
    public string Id {get; set;} 
    [JsonProperty("name")] 
    public string Name {get;set;} 
} 

我試圖做的建議here和運行

JsonConvert.DeserializeObject<FolderList<Folder>>(json); 

,但它不工作,因爲響應沒有爲每個項目standardList鍵,它是一個數組。我如何反序列化成一個數組?

編輯:實際JSON

{"standardList":[{"created":"\/Date(13963113097000)\/","createdBy":"User Name","envId":"1234-1234-1234","extension":"nbsq","id":"5326-0160-3098","modified":"\/Date(1396323497000)\/","modifiedBy":"User Name","name":"File Name Here","officialVer":1,"size":1,"syncMod":32350008075,"url":"https:\/\/www.example.com","versions":1},{"created":"\/Date(1334556017000)\/","createdBy":"User Name","envId":"1234-1234-1234","extension":"nbsq","id":"4728-1586-4633","modified":"\/Date(13933576017000)\/","modifiedBy":"User Name","name":"File Name Here","officialVer":1,"size":1,"syncMod":2822280170,"url":"https:\/\/www.example.com","versions":1}]} 
+3

(通常最好報告/顯示*實際* JSON,而不是其中的一部分。) – user2864740

+2

這個最重要的東西是無效的JSON。你能發佈實際的JSON,而不是從瀏覽器或工具中複製出來的內容嗎? – Joe

+0

您可以通過在C#模型中創建一個數組來反序列化爲一個數組。例如:'公用文件夾[] FolderList {get; set;}'。 –

回答

2

轉到Json2csharp.com。傳入一些有效的JSON。引用項目中生成的類,然後將其反序列化到它們中。首先轉到jsonlint,使您的JSON變得輕鬆。應該工作一個治療。

+2

或在Visual Studio中得到了一個來自Netwonsoft.Json.dll的'System.OverflowException' :編輯 - >選擇性粘貼 - >粘貼爲JSON類 – crashmstr

+0

謝謝!原來,我的syncMod鍵的數據類型錯誤,並且引發了異常。我從來沒有注意到沒有該網站。多麼好的資源。 –