【发布时间】:2014-06-13 16:04:17
【问题描述】:
我正在尝试使用返回以下 JSON 结构的 API:
{
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: 3210357275
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 和 name 值。我有一个模型:
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}]}
【问题讨论】:
-
(通常最好报告/显示 实际 JSON,而不是对其进行某种再现。)
-
最重要的不是有效的 JSON。你能发布实际的 JSON 而不是从浏览器或工具中复制的内容吗?
-
您通过在 C# 模型中拥有一个数组来反序列化为一个数组。例如:
public Folder[] FolderList {get;set;}. -
FolderList 应该包含某种
IEnumerable<Folder>,而不是单个文件夹。 -
@SimonBelanger 我将模型更改为使用数组。
public Folder[] FolderList {get;set;}但当我调用JsonConvert.DeserializeObject<FolderList>(json);时,我从 Netwonsoft.Json.dll 获得了System.OverflowException