C# JSON.NET:如何序列化嵌套集合
这让我快发疯了。。。我正在使用JSON.net将列表序列化为JSON。我希望这个JSON:C# JSON.NET:如何序列化嵌套集合,c#,json.net,C#,Json.net,这让我快发疯了。。。我正在使用JSON.net将列表序列化为JSON。我希望这个JSON: { "fieldsets": [ { "properties": [ { "alias": "date", "value": "2014-02-12T00:00:00" }, {
{
"fieldsets": [
{
"properties": [
{
"alias": "date",
"value": "2014-02-12T00:00:00"
},
{
"alias": "time",
"value": null
}
],
"alias": "eventDates",
"disabled": false
}
]
}
但我得到的却是:
{
"fieldsets": [
{
"properties": [
{
"values": [
{
"alias": "date",
"value": "2014-07-13T00:00:00"
},
{
"alias": "time",
"value": "Registration begins at 8:00 AM; walk begins at 9:00 AM"
}
]
}
],
"alias": "eventDates",
"disabled": false
}
]
}
我想要的“values”集合只是一个JSON数组,但我一辈子都不知道如何让它做到这一点。我在我的“属性”对象上有一个名为“值”的属性,所以我理解它为什么这样做,但我只需要一个直接数组,而不是一个JSON对象。对于这个响应,您需要这个类结构
public class Property
{
[JsonProperty("alias")]
public string Alias { get; set; }
[JsonProperty("value")]
public string Value { get; set; }
}
public class Fieldset
{
[JsonProperty("properties")]
public Property[] Properties { get; set; }
[JsonProperty("alias")]
public string Alias { get; set; }
[JsonProperty("disabled")]
public bool Disabled { get; set; }
}
public class Response
{
[JsonProperty("fieldsets")]
public Fieldset[] Fieldsets { get; set; }
}
这可能就是答案:
public class Property
{
public string alias { get; set; }
public string value { get; set; }
}
public class Fieldset
{
public List<Property> properties { get; set; }
public string alias { get; set; }
public bool disabled { get; set; }
}
public class RootObject
{
public List<Fieldset> fieldsets { get; set; }
}
公共类属性
{
公共字符串别名{get;set;}
公共字符串值{get;set;}
}
公共类字段集
{
公共列表属性{get;set;}
公共字符串别名{get;set;}
公共bool已禁用{get;set;}
}
公共类根对象
{
公共列表字段集{get;set;}
}
您可以转换为作业对象:
JObject jsonObject = JObject.Parse(myJsonString);
按键导航:
jsonObject["property"]["value"];//Property is value / object
jsonObject["value"];
按索引导航:
jsonObject[0]["value"]; // Property is array / list
jsonObject[0];
让我们看看要序列化的对象的对象定义。你刚刚发布了json2csharp.com给你的东西吗?首先,你不能在列表中使用默认的get/set,但这只是一个开始。这非常接近,除了我在“属性”数组中得到了一些奇怪的东西。。。它输出两次,一次使用“属性”,一次使用“属性”:无需担心。。。我在错误的位置有一个JsonProperty属性。。。这管用!非常感谢你!!!几乎花了一整天的时间试图把这件事做好-/很高兴我能帮忙:)