问题是,获取所有组的Gerrit响应看起来像这样,我发现拥有{}之外的组名称会给我造成问题,因为当我创建类来保存该组,我不得不让组中的类能够反序列化响应。通用类保存gerrit的JSON数据
但是,无论何时创建一个新的gerrit组,我都不想创建一个具有该名称的新类。
[{
"Administrators": {
"id": "6a1e70e1a88782771a91808c8af9bbb7a9871389",
"url": "#/admin/groups/uuid-6a1e70e1a88782771a91808c8af9bbb7a9871389",
"options": {
},
"description": "Gerrit Site Administrators",
"group_id": 1,
"owner": "Administrators",
"owner_id": "6a1e70e1a88782771a91808c8af9bbb7a9871389"
},
"Anonymous Users": {
"id": "global%3AAnonymous-Users",
"url": "#/admin/groups/uuid-global%3AAnonymous-Users",
"options": {
},
"description": "Any user, signed-in or not",
"group_id": 2,
"owner": "Administrators",
"owner_id": "6a1e70e1a88782771a91808c8af9bbb7a9871389"
},
"MyProject_Committers": {
"id": "834ec36dd5e0ed21a2ff5d7e2255da082d63bbd7",
"url": "#/admin/groups/uuid-834ec36dd5e0ed21a2ff5d7e2255da082d63bbd7",
"options": {
"visible_to_all": true,
},
"group_id": 6,
"owner": "MyProject_Committers",
"owner_id": "834ec36dd5e0ed21a2ff5d7e2255da082d63bbd7"
}]
这里是类:
public class Administrators
{
public string id { get; set; }
public string url { get; set; }
public Options options { get; set; }
public string description { get; set; }
public int group_id { get; set; }
public string owner { get; set; }
public string owner_id { get; set; }
}
public class AnonymousUsers
{
public string id { get; set; }
public string url { get; set; }
public options { get; set; }
public string description { get; set; }
public int group_id { get; set; }
public string owner { get; set; }
public string owner_id { get; set; }
}
public class MyProjectCommitters
{
public string id { get; set; }
public string url { get; set; }
public options { get; set; }
public int group_id { get; set; }
public string owner { get; set; }
public string owner_id { get; set; }
}
和我想要做的是有一个叫GerritGroup类来保存这一切并能够反序列化的任何这样的组中的对象。
我现在做的方式是这样的:
IList<GerritGroup> grps = JsonConvert.DeserializeObject<IList<GerritGroup>>(cleanedResponse);
,我也得到一个列表与空的所有属性一个对象。
你能给我一些关于这个JSON响应的建议吗?
可能使用http://jsonlint.com/来验证json,例如“visible_to_all”:true *,* - 逗号可能是解析错误的原因。 – Vladimir