我正在构建一个响应GET请求的API。一个字段是一个对象,它需要与查询返回的次数重复一次。
有人能举例说明如何在c#的响应中使用对象吗?这个类还需要创建吗?
提前致谢。
ADD:
到目前为止,我的结构如下:
public class root
{
public int model { get; set; }
public string lang { get; set; }
public part[] parts { get; set; }
}
public class part
{
public int id { get; set; }
public string name { get; set; }
public type part_types { get; set; }
}
public class type
{
public string url { get; set; }
public string desc { get; set; }
}
并且回复为
{“model”:4,“lang”:“en_US”,“parts”:[{“id”:1545,“name”:“Part 1”,“part_types”:{“url”:“part .com / type1“,”desc“:”有6位“}}]}
但我需要它像
{“model”:4,“lang”:“en_US”,“parts”:[{“id”:1545,“name”:“Part 1”,“part_types”:{“type 1”:{ “url”:“part.com/type1”,“desc”:“有6位”},“类型2”:{“url”:“part.com/type2”,“desc”:“有7位。 “ }}}}}
part_type字段是对象,我创建了一个名为type的类。但我需要有一个或多个类型并指定类型的名称,例如“类型1”,然后在其下面还有另外两个字段url和desc。如您所见,上面有2种类型,类型1和类型2。
任何人都可以在我出错的地方帮助我吗?
答案 0 :(得分:0)
所以,如果我理解正确,你想要“part_types”能够有很多部分吗?在您当前的代码中,part_types对象只能有一个。
你需要两件事: 1.作为集合的数据类型,和 2.一个序列化程序,以您希望的方式写入该数据类型。 因此,例如,您可以使用Dictionary(System.Collections.Generic.Dictionary)。
public Dictionary<string,type> part_types { get; set; }
因此,假设您已经创建了对象type1和type2,那么您可以编写:
mypart.part_types = new Dictionary<string,type>();
mypart.part_types.Add("type 1", type1);
mypart.part_types.Add("type 2", type2);
现在发生的事情取决于序列化器。我通常使用Json.NET,它运行良好且是免费的。我设置了像你的对象,但使用字典,我得到:
{
"model": 4,
"lang": "en_US",
"parts": [
{
"id": 1545,
"name": "Part 1",
"part_types": {
"type 1": {
"url": "part.com/type1",
"desc": "has 6 bits"
},
"type 2": {
"url": "part.com/type1",
"desc": "has 6 bits"
}
}
}
]
}
我认为这就是你要找的......但是,使用DataContractJsonSerializer(System.Runtime.Serialization.Json.DataContractJsonSerializer),我明白了:
{
"lang": "en_US",
"model": 4,
"parts": [
{
"id": 1545,
"name": "Part 1",
"part_types": [
{ "Key" : "type 1", "Value": {"desc":"has 6 bits","url":"part.com\/type1"} },
{ "Key" : "type 2", "Value": {"desc":"has 6 bits","url":"part.com\/type1"} }
]
}
]
}
我不确定DataContractJsonSerializer如何处理其他集合(例如Lists,KeyValuePairs等),因此如果您正在使用它,则可能需要进行试验。