You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
2.0 KiB

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;
}
}
}