我有一个 json 字符串
json1 = "{\"Shops\":[{\"id\":\"1\",\"title\":\"AAA\"},{\"id\":\"2\",\"title\":\"BBB\"}],\"movies\":[{\"id\":\"1\",\"title\":\"Sherlock\"},{\"id\":\"2\",\"title\":\"The Matrix\"}]}";
Run Code Online (Sandbox Code Playgroud)
想要反序列化并获取 requestcollection 类中的两个类商店和电影中的值。
[WebInvoke(
Method = "POST",
UriTemplate = "SubmitRequest",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json
)
]
string SubmitRequest(string RequestDetailsjson);
Run Code Online (Sandbox Code Playgroud)
并在service.cs中
JavaScriptSerializer serializer = new JavaScriptSerializer();
RequestDetailsCollection requestdetailscoll = serializer.Deserialize<RequestDetailsCollection>(RequestDetailsjson);
Run Code Online (Sandbox Code Playgroud)
出现错误
服务器在处理请求时遇到错误。异常消息是“反序列化 System.String 类型的对象时出错”。预计名称空间“”中的结束元素“根”。从命名空间“.”中找到元素“request”。有关更多详细信息,请参阅服务器日志。异常堆栈跟踪是:
我将参数类型更改为stream
string SubmitRequest(Stream RequestDetailsjson);
Run Code Online (Sandbox Code Playgroud)
并更改了代码
StreamReader sr = new StreamReader(RequestDetailsjson);
JavaScriptSerializer serializer = new JavaScriptSerializer();
RequestDetailsCollection requestdetailscoll = (RequestDetailsCollection)serializer.DeserializeObject(sr.ReadToEnd());
Run Code Online (Sandbox Code Playgroud)
并出现错误
服务器在处理请求时遇到错误。异常消息是“操作‘SubmitRequest’的传入消息(命名空间‘ http://tempuri.org/ ’的合约‘IService1 ’)包含无法识别的http正文格式值‘Json’。预期的正文格式值为“Raw”。这可能是因为尚未在绑定上配置 WebContentTypeMapper。有关更多详细信息,请参阅 WebContentTypeMapper 的文档。有关更多详细信息,请参阅服务器日志。异常堆栈跟踪是:
帮我解决这个问题