>  기사  >  웹 프론트엔드  >  Json 직렬화 및 역직렬화 방법 분석_jquery

Json 직렬화 및 역직렬화 방법 분석_jquery

WBOY
WBOY원래의
2016-05-16 17:08:081403검색

코드 복사 코드는 다음과 같습니다.

/// <요약>
/Json 직렬화, 클라이언트에 보내는 데 사용됨
/// & lt;/Summary & gt;
Public Stration tojsjson(이 개체 항목)
{

DataContractJsonSerializer 직렬 변환기 = new DataContractJsonSerializer(item.GetType());

(MemoryStream ms = new MemoryStream()) 사용
{

serializer.WriteObject(ms, 항목);

StringBuilder sb = new StringBuilder();

sb.Append(Encoding.UTF8.GetString(ms.ToArray()));

sb.ToString()을 반환합니다.

         }

}

                                                                            ​;T>(이 문자열 jsonString)
{

DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));

MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));

T jsonObject = (T)ser.ReadObject(ms);

ms.Close();

jsonObject를 반환합니다.

        }

엔티티 클래스



코드 복사 코드는 다음과 같습니다. [DataContract]
공개 클래스 TestObj
{
[DataMember]
공개 문자열 make { get; set; 🎜>                                                                                                            ~                             >------javascript가 Json을 가져옴---------

javascript 호출 테스트 코드




코드 복사


코드는 다음과 같습니다.

$('#getJson').click(function() {
               $.ajax({
                 url: "getJsonHandler.ashx",
                  입력: 'GET ',
                  데이터: {},
                  dataType: 'json',
                  시간 초과: 1000,
                   오류: 함수(XMLHttp 요청, textStatus, errorThrown) { 경고(textStatus) },
                    성공: 기능(결과 ) {

                      경보(result.make);
                     경보(결과.모델);
                                      경고(result.color);
                   }

               });

           });

C#后台生成代码

复代码 代码如下:
public class getJsonHandler: IHttpHandler
    {
public void ProcessRequest(HttpContext context)
        {
            TestObj obj = new TestObj();
            obj.make = "Make is Value";

            obj.model = "Model is Value";
            obj.year = 999;
            obj.color = "Color is Value";

            context.Response.Write(obj.ToJsJson());

        }
 public bool IsReusable
        {
           get
            {
                false 반환;
            }
        }
}

//返回值为 ​​{"color":"Color is Value","make":"Make is Value","model":"Model":"Model is Value","year":999}


----C#由Json생성자----------
javascript调用测试代码


复代码 代码如下:

           $('#postJson').click(function() {

               var m_obj = { 제조사: "Dodge", 모델: "Coronet R/T", 연도: 1968, 색상: "노란색" };
               var jsonStr = JSON.stringify(m_obj); //사용Json2.js생성Json字符串

               $.ajax({
                   url: "postJsonHandler.ashx",
                   'POST',
                   데이터: { postjson: jsonStr },
                   데이터 유형: 'json',
                   시간 초과: 1000,
                   오류: function(XMLHttpRequest, textStatus, errorThrown) { 경고(textStatus) },
                   성공: 함수(결과) {

                      경고(결과.성공);
                  }

               });
});


C#后台生成代码
复aze代码 代码如下:
public class postJsonHandler: IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
           string jsonStr = context.Request["postjson"] ;
            TestObj obj = jsonStr.FromJsonTo();

            if (string.IsNullOrEmpty(obj.make) || string.IsNullOrEmpty(obj.model) || string.IsNullOrEmpty(obj.color)

|| obj.연도 < 0)

            {
               context.Response.Write("{success:false}");
           }
           else
            {
                context.Response.Write("{성공:true }");
            }

공개 bool IsReusable

        {
            get
            {
               return false;
           }
        }
}

使用 Json时需要注意,服务器端拼凑生成Json字符串时, 一定要注意把字符串用""包裹,不然客户端接收时肯定会报错,根据Json字符串生成对象,是根据对应的name称赋值,多于或少于도不会报错.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.