如何反序列化我在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);
答案 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);