using com.alibaba.openapi.client.entity; using com.alibaba.openapi.client.exception; using com.alibaba.openapi.client.policy; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.Serialization.Json; using System.Text; using System.Threading.Tasks; namespace com.alibaba.openapi.client.serialize { public class Json2Deserializer : DeSerializer { //返回该反序列化接口支持的数据协议. public String supportedContentType() { return Protocol.json2; } public ResponseWrapper deSerialize(Stream istream, Type resultType, String charSet) { StreamReader sr = new StreamReader(istream, Encoding.UTF8); string strhtml = sr.ReadToEnd(); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strhtml))) { DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(resultType); object result = jsonSerializer.ReadObject(ms); ResponseWrapper responseWrapper = new ResponseWrapper(); responseWrapper.Result = result; return responseWrapper; } } public Exception buildException(Stream istream, int statusCode, String charSet) { istream.Position = 0; DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(ErrorExceptionDesc)); object resultObj = jsonSerializer.ReadObject(istream); ErrorExceptionDesc result = (ErrorExceptionDesc)resultObj; String errorCodeStr = result.getError_code(); String errorMesage = result.getError_message(); OceanException oceanException = new OceanException(errorMesage); oceanException.setError_code(errorCodeStr); oceanException.setError_message(errorMesage); return oceanException; } } }