在API响应中使用对象

时间:2013-07-24 07:31:26

标签: c# api response

我正在构建一个响应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。

任何人都可以在我出错的地方帮助我吗?

1 个答案:

答案 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等),因此如果您正在使用它,则可能需要进行试验。