0

我正在构建一个响应 GET 请求的 API。一个字段是一个对象,它需要与查询返回的数据一样多次重复。

谁能给我一个示例,说明如何在 c# 的响应中使用对象?还需要创建类吗?

提前致谢。

添加:

到目前为止,我的结构如下:

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; }
}

并且响应返回为

{“模型”:4,“语言”:“en_US”,“零件”:[{“id”:1545,“名称”:“第 1 部分”,“part_types”:{“url”:“part.com/ type1", "desc" : "有 6 位" } } ] }

但我需要它

{“模型”:4,“语言”:“en_US”,“零件”:[{“id”:1545,“名称”:“第 1 部分”,“part_types”:{“类型 1”:{“url” :“part.com/type1”,“desc”:“有 6 位”},“类型 2”:{“url”:“part.com/type2”,“desc”:“有 7 位。” } } } ] }

part_type 字段是对象,我创建了一个名为 type 的类。但是我需要有一种或多种类型并指定类型的名称,例如“type 1”,然后在它的 url 和 desc 下还有 2 个字段。如您所见,上面有 2 种类型,类型 1 和类型 2。

谁能帮助我哪里出错了?

4

1 回答 1

0

所以,如果我理解正确,你希望“part_types”能够有很多部分吗?在您当前的代码中,part_types 对象只能有一个。

您需要两件事:1. 一种数据类型,它是一个集合,以及 2. 一个以您想要的方式写入该数据类型的序列化程序。因此,例如,您可以使用字典 (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 等),因此如果您正在使用它,您可能需要进行试验。

于 2013-07-25T19:33:53.973 回答