创建复杂的多个动态对象来创建嵌套的json



创建json的新手,但需要准备一些数据发送到API,以便及时学习。

这就是我想要创造的;

[
{
"alias": "H02010",
"address": "Demoroad 9",
"city": "Demotown",
"customer_id": "727",
"property_id": "02010",
"services": [
{
"description": "Service1",
"shortname": "S1",
"orderdates": [
"2020-11-30",
"2020-12-14",
"2020-12-28"
]
},
{
"description": "Service2",
"shortname": "S2",
"orderdates": [
"2020-11-19",
"2020-12-17"
]
}
]
}
]

挑战在于,可能有1到10个服务需要生成。为了创建一个";静态";上面的版本我做了这个;

public class Anlobject 
{
public string alias { get; set; }
public string address { get; set; }
public string city { get; set; }
public string customer_id { get; set; }
public string property_id { get; set; }
public Services services { get; set; }
public Services2 services2 { get; set; }
}
public class Services
{
public string description { get; set; }
public string shortname { get; set; }
public string[] dates { get; set; }
}
public class Services2
{
public string description { get; set; }
public string shortname { get; set; }
public string[] dates { get; set; }
}
private static Anlobject CreateAnlobject()
{
var obj = new Anlobject()
{
alias = "H02010",
address = "Demoroad 9",
city = "Demotown",
customer_id = "727",
property_id = "02010",
services = new Services()
{
description = "Service1",
shortname = "S1",
orderdates = new string[] { "2020-01-01","2020-02-01"},
},
services2 = new Services2()
{
description = "Service2",
shortname = "S2",
orderdates = new string[] { "2020-01-01", "2020-02-01" },
},
};
return obj;
}
private void bTest_Click(object sender, EventArgs e)
{
var obj = CreateAnlobject();
var json = JsonConvert.SerializeObject(obj, Formatting.Indented);
File.WriteAllText("c:\temp\jSonTestTK.json", json.ToString());
}

有没有一种方法可以只使用一个Services((,但多次调用它,或者我完全走错了方向?

提前感谢您提供任何查找或搜索的提示。

您不需要(或不想要(Services2类或services2属性。services属性是Services对象的集合。(不过我建议该类的名称为Service。(

房产应该是这样的:

public IEnumerable<Services> services { get; set; }

初始化如下:

services = new List<Services>
{
new Services()
{
description = "Service1",
shortname = "S1",
orderdates = new string[] { "2020-01-01","2020-02-01"},
},
new Services()
{
description = "Service2",
shortname = "S2",
orderdates = new string[] { "2020-01-01", "2020-02-01" },
}
}

下面是示例代码。

模型如下所示。您不需要服务2

public class Service //create class as singular
{
public string description { get; set; }
public string shortname { get; set; }
public string[] orderdates { get; set; }
}
public class Anlobject
{
public string alias { get; set; }
public string address { get; set; }
public string city { get; set; }
public string customer_id { get; set; }
public string property_id { get; set; }
public List<Service> services { get; set; }
}

CreateAnlobject功能

private static Anlobject CreateAnlobject()
{
var service1 = new Service()
{
description = "Service1",
shortname = "S1",
orderdates = new string[] { "2020-01-01", "2020-02-01" },
};
var service2 = new Service()
{
description = "Service2",
shortname = "S2",
orderdates = new string[] { "2020-01-01", "2020-02-01" },
};
var obj = new Anlobject()
{
alias = "H02010",
address = "Demoroad 9",
city = "Demotown",
customer_id = "727",
property_id = "02010",
services = new List<Service> { service1, service2}
};
return obj;
}

从主方法调用方法

var obj = CreateAnlobject();
var json = JsonConvert.SerializeObject(new List<Anlobject> { obj }); //you need list of Anlobject
File.WriteAllText("c:\rnd\jSonTestTK.json", json.ToString());

最新更新