代码之家  ›  专栏  ›  技术社区  ›  DooDoo

在Java中调用接受类的数组或列表的web服务

  •  0
  • DooDoo  · 技术社区  · 7 年前

    [DataContract]
    public class CompositeType
    {
        string stringValue = "Hello ";
    
        [DataMember]
        public string StringValue
        {
            get { return stringValue; }
            set { stringValue = value; }
        }
    
        [DataMember]
        public List<Product> Products { get; set; }
    }
    
    [DataContract]
    public class Product
    {
        [DataMember]
        public int PID { get; set; }
    
        [DataMember]
        public string PName { get; set; }
    }
    

    以及我的网络方法:

    [OperationContract]
    CompositeType GetDataUsingDataContract(CompositeType composite);
    

    BasicHttpBinding Java用户也可以这样称呼它。既然Java程序员不在我身边,我想问问那些有经验的人:

    List<Product> ?

    2) 我该换衣服吗 List Array ?

    2 回复  |  直到 7 年前
        1
  •  1
  •   chrylis -cautiouslyoptimistic-    7 年前

    假设您的httpapi将其序列化为JSON(或者XML)。无论哪种情况,像Jackson这样的库都可以很好地处理它,大多数REST客户机甚至会自动处理这部分。遵守标准是规则,只要 List<Product> 转换成/从一个常规的JSON数组,一切都应该顺利进行。

    JSON没有单独的列表类型,只有普通数组,因此数组或基于列表的序列化应该是等效的。

    camelCase snake_case 对于属性,您的属性名(JSON格式)应该是 stringValue products , pid ,和 pName .

        2
  •  1
  •   Abraham Qian    7 年前


    WebService是一个规范,任何实现它的服务都可以称为WebService。它们使用基于XML的SOAP消息进行通信。它们使用WSDL来描述服务细节,用于生成客户机代理类。WCF可以被各种平台跨服务边界调用的原因是它也是一个web服务。尽管在不同的平台上可能有不同的数据类型,但只要我们指定如何用XML表示它以及如何序列化它,其他平台就可以正确地调用该服务,默认情况下,List被指定为使用一维数组序列化。