在XML中为RESTful服务表示List的最佳方法是什么,以便更容易反序列化

时间:2013-08-24 18:39:15

标签: c# java xml rest

我使用两种编程语言:Java和C#,两者通过RESTful服务进行通信。从Java开始,我为C#程序发出的请求发送了一些XML,并且GET的响应包括一些列表结构。

<X>
    <A>[3, 18, 11, 8, 19, 6]</A>
</X>
<X>
    <A>[3, 18, 11, 8, 19, 6]</A>
</X>

我很难将字符串解析回列表,不是很难,但是手动。我所做的是:

    public RoutingResults(String A) 
    {
        A = A.Replace("[", "");
        A = A.Replace("]", "");
        A = A.Replace(" ", "");
        String[] As = A.Split(new String[] {","}, StringSplitOptions.RemoveEmptyEntries);

        this.A = new List<string>();
        foreach (String ax in As)
        {
            this.As.Add(ax);
        }
    }

我认为上面的代码太有趣了,你不这么认为吗?如果有人有一天会侵入我的电脑并且知道我必须以某种方式编写代码,我会感到很尴尬。哈哈。

所以我的问题是,特别是那些对RESTful,REST世界和XML有经验的人,以及任何技术部分;什么是在XML for REST中表示列表的理想方式,以后它也是理想的反序列化。请提供一些代码来举例说明,无论是在C#xor Java中。

如果我必须发送这样的回复:

 <X>
      <A>
          <as>3</as>
          <as>18</as>
          <as>11</as>
          <as>8</as>
          <as>19</as>
          <as>6</as>
      <A>
 </X>

我认为发送上述格式的数据会对性能造成影响;比较数据的格式是否整齐,只是典型java.util.List的.toString表示。你不这么认为吗?

1 个答案:

答案 0 :(得分:0)

我不会说原始代码说实话有多大错。它完成了这项工作,它只有几行而且很清楚它是如何做到的。您可以将最后一位更改为:

this.A = new List<string>(As);

...因为List<T>的构造函数能够将数组作为输入并自动填充。

您还可以考虑将其作为JSON数组发送,这类似,并且不会涉及大量额外的XML标记。请参阅converting an array in a json string into a list