【发布时间】:2016-04-16 23:58:01
【问题描述】:
我有一个 json 字符串
json1 = "{\"Shops\":[{\"id\":\"1\",\"title\":\"AAA\"},{\"id\":\"2\",\"title\":\"BBB\"}],\"movies\":[{\"id\":\"1\",\"title\":\"Sherlock\"},{\"id\":\"2\",\"title\":\"The Matrix\"}]}";
想要反序列化并获取 requestcollectionclass 中两个类 shop 和 movies 中的值。
[WebInvoke(
Method = "POST",
UriTemplate = "SubmitRequest",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json
)
]
string SubmitRequest(string RequestDetailsjson);
在service.cs中
JavaScriptSerializer serializer = new JavaScriptSerializer();
RequestDetailsCollection requestdetailscoll = serializer.Deserialize<RequestDetailsCollection>(RequestDetailsjson);
遇到错误
服务器在处理请求时遇到错误。异常消息是“反序列化 System.String 类型的对象时出错。应来自命名空间“”的结束元素“根”。从命名空间 ''.' 中找到元素 'request'。有关更多详细信息,请参阅服务器日志。异常堆栈跟踪是:
我把参数类型改成了流
string SubmitRequest(Stream RequestDetailsjson);
并改了代码
StreamReader sr = new StreamReader(RequestDetailsjson);
JavaScriptSerializer serializer = new JavaScriptSerializer();
RequestDetailsCollection requestdetailscoll = (RequestDetailsCollection)serializer.DeserializeObject(sr.ReadToEnd());
然后出现错误
服务器在处理请求时遇到错误。异常消息是“用于操作“SubmitRequest”的传入消息(具有命名空间“http://tempuri.org/”的合同“IService1”)包含无法识别的 http 正文格式值“Json”。预期的正文格式值为“原始”。这可能是因为尚未在绑定上配置 WebContentTypeMapper。有关详细信息,请参阅 WebContentTypeMapper 的文档。有关更多详细信息,请参阅服务器日志。异常堆栈跟踪是:
帮我解决这个问题
【问题讨论】:
-
RequestDetailsCollection的邮政编码
标签: c# json wcf serialization json-deserialization