gpt4 book ai didi

asp.net - WCF RESTful JSON Web 服务发布对象的嵌套列表

转载 作者:行者123 更新时间:2023-12-04 06:33:42 26 4
gpt4 key购买 nike

我正在开发一个接受 JSON 参数的 WCF 服务。我想不通我哪里出错了。请帮忙。

当我使用 fiddler 测试服务时,我发布了以下内容:

"locations": {
"Departments": [{
"Name": "Amazonas",
"alias": "",
"Municipalities": [{
"Name": "El Encanto"
}, {
"Name": "La Chorrera"
}]

}]
}

我收到一个 400 错误:“服务器在处理请求时遇到错误。异常消息是‘OperationFormatter 遇到无效的消息体。期望找到名称为‘type’和值为‘object’的属性。找到值‘string’ .'。有关更多详细信息,请参阅服务器日志。”

堆栈跟踪是:
    at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)
at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[] parameters)
at System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest(Message message, Object[] parameters)
at System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest(Message message, Object[] parameters)
at System.ServiceModel.Dispatcher.CompositeDispatchFormatter.DeserializeRequest(Message message, Object[] parameters)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

这是契约(Contract):
 [OperationContract(Name = "setFacilities")]
[WebInvoke(
Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
UriTemplate = "/setFacilities")]
string SetFacilities(LocationData locations);

[更新]

这是 LocationData 类
    [Serializable]
public class LocationData
{
public IList<Department> Departments;
}

[Serializable]
public class Department
{
public string Name;
public string Alias;
public IList<Municipality> Municipalities;
}

[Serializable]
public class Municipality
{
public string Name;
}

我错过了什么?

最佳答案

问题是你的 JSON。

您还没有分享类(class) LocationData所以我不能告诉你它应该是什么样子,但你的 JSON 需要用括号括起来:

{
"locations": {
"Departments": [{
"Name": "Amazonas",
"alias": "",
"Municipalities": [{
"Name": "El Encanto"
}, {
"Name": "La Chorrera"
}]

}]
}
}

我猜 LocationData实际上是具有 Departments 的那个所以我想 "locations":是多余的:
{

"Departments": [{
"Name": "Amazonas",
"alias": "",
"Municipalities": [{
"Name": "El Encanto"
}, {
"Name": "La Chorrera"
}]

}]
}

关于asp.net - WCF RESTful JSON Web 服务发布对象的嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5084239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com