2014-06-13 222 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键的数据类型错误,并且引发了异常。我从来没有注意到没有该网站。多么好的资源。 –