首页 新闻 赞助 找找看

WCF中datacontract的成员如果是一个数组,应该怎么处理?

0
悬赏园豆:40 [已解决问题] 解决于 2013-01-10 11:23

大家好,

现在用WCF发布一个WEB SERVICE,使用POST,入参出参都使用JSON.

 

客户端提交订单数据(包含订单头跟订单明细),订单明细是多行的.现在发现使用数据的形式WCF不能成功接收订单明细,但可以接收订单头.代码如下:

/// <summary>
/// 订单行项目信息
/// </summary>
[DataMember]
public order_line[] orderlines { get; set; }

 

所有的订单头信息接收无误,向大家请教订单明细应该如何定义?

谢谢!

小猪凯的主页 小猪凯 | 初学一级 | 园豆:38
提问于:2013-01-09 18:00
< >
分享
最佳答案
0

没有问题,应该是你POST的数据格式不正确。你可以通过在服务端返回一个JSON格式的 Order 对象,来观察它的 orderlines 属性是怎么表示成 JSON 的。

收获园豆:30
Launcher | 高人七级 |园豆:45045 | 2013-01-09 18:02

"orderlines" : [
{
"quantity" : 2,
"weight_in_kg" : "",
"price" : 55,
"taste" : "",
"dish_ref" : 1025,
"dish_label" : "鸿运当头"
}
],

上面是提交的JSON数据中订单明细的部分.应该没什么问题啊

小猪凯 | 园豆:38 (初学一级) | 2013-01-10 08:41

WCF发布的web service,提交JSON的是IOS的应用程序.不过这个应该没有关系的吧.

仍然不知道问题出在哪儿.谢谢!

小猪凯 | 园豆:38 (初学一级) | 2013-01-10 08:42

@小猪凯: 

POST http://xxxxxxx HTTP/1.1
Content-Type: application/json; charset=utf-8
Content-Length: 123

{"name":"sdfsdf","orderlines":[{"price":5,"quantity":5.6,"weight_in_kg":"s"},{"price":5,"quantity":5.6,"weight_in_kg":""}]}


你给的格式没有问题,但是请你检查你的请求头中是否包含 Content-Type: application/json; charset=utf-8,另外,你的数据类型是否匹配,比如 weight_in_kg 是否在服务上被定义为 string 类型。

Launcher | 园豆:45045 (高人七级) | 2013-01-10 09:36

@Launcher: 你好,我检查了服务器上数据类型,修改了

weight_in_kg的类型为string;
price,quantity设置为double,

/// <summary>
/// 订单行项目信息
/// </summary>
[DataMember]
public order_line[] orderlines { get; set; }

但这样服务器端直接返回HTML的错误,说服务器存在问题.
气死我了
小猪凯 | 园豆:38 (初学一级) | 2013-01-10 11:15

@Launcher: 啊,的确是因为数据类型的原因.谢谢帮助!

小猪凯 | 园豆:38 (初学一级) | 2013-01-10 11:23
其他回答(1)
0

应该没有任何的问题啊。

收获园豆:10
chenping2008 | 园豆:9836 (大侠五级) | 2013-01-10 09:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册