如何反序列化我发送到我的Web服务的数据?

时间:2013-05-30 01:41:30

标签: android asp.net web-services deserialization

如何反序列化我在asp.net webservice中作为json对象发送的字符串。

HttpClient client = new DefaultHttpClient();  

HttpPost post = new HttpPost("http://server/NCO/webservice.asmx/GetNRIC");   

post.setHeader("Content-type", "application/json");

post.setHeader("Accept", "application/json");

JSONObject obj = new JSONObject();

obj.put("ic", "s1111111b");

post.setEntity(new StringEntity(obj.toString(), "UTF-8"));

HttpResponse response = client.execute(post);  

1 个答案:

答案 0 :(得分:1)

您需要一个包含如下方法的实用程序类。

 public static T JsonDeserialize<T> (string jsonString)
 {
     DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
     MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
     T obj = (T)ser.ReadObject(ms);
     return obj;
 }

查看this link了解详情。无论如何,如果在两侧都使用数据传输对象(DTO),您会发现此序列化和反序列化方案更容易。然后,您不必从Android端手动安排JSON字符串。为此,您可能还需要Android端的JacksonMapper将DTO直接转换为String。 从ASP.NET方面,即使您可以拥有相同的实体类,因此反序列化变得更容易

RequestDTO requestDTO = JsonHelper.JsonDeserialize<RequestDTO>(jsonString);