创建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());