시스템 사용;
System.Collections 사용;
System.Collections.Generic 사용;
System.Configuration 사용;
System.Data 사용;
System.Linq 사용;
System.Web 사용;
System.Web.Security 사용;
System.Web.UI 사용;
System.Web.UI.HtmlControls 사용;
System.Web.UI.WebControls 사용;
System.Web.UI.WebControls.WebParts 사용;
System.Web.Services 사용;
공개 부분 클래스 Default2 : System.Web.UI.Page
{
protected void Page_Load(객체 전송자, EventArgs e)
{
}
[WebMethod]
public 정적 문자열 HelloWorld()
{
return "123--->456";
}
[WebMethod]
공개 정적 문자열 ABC(문자열 ABC)
{
return ABC;
}
[WebMethod]
공개 정적 문자열 GetWish(문자열 값1, 문자열 값2, 문자열 값3, int 값4)
{
return string.Format("祝您재{3}年里 {0}、{1}、{2}", 값1, 값2, 값3, 값4);
}
/// <요약>
/// 返回集합
///
///
/// <반품>반품>
[WebMethod]
공개 정적 목록
GetArray(int i)
{
목록 list = new List();
while (i >= 0)
{
list.Add(i--);
}
반품 목록;
}
/// <요약>
/// 返回一个复합类型
///
/// <반품>반품>
[WebMethod]
public static Class1 GetClass()
{
return new Class1 { ID = "1", Value = "牛年大吉" };
}
공용 클래스 Class1
{
공용 문자열 ID { get; 세트; }
공개 문자열 값 { get; 세트; }
}
}
System.Collections 사용;
System.Collections.Generic 사용;
System.Web.Script.Serialization 사용;
public class Handler : IHttpHandler {
public void ProcessRequest(HttpContext 컨텍스트) {
JavaScriptSerializer jss = new JavaScriptSerializer();
context.Response.ContentType = "텍스트/일반";
// 返回的为Json格式一 Js对象
string data = "{"name":"wang","age":25}";
// 返回的为Json格式two Js数组
//string data = "[{"name":"wang","age":25},{"name":"zhang","age ":22}]";
context.Response.Write(데이터);
}
public bool IsReusable {
get {
return false;
}
}
}
위의 방법은 기본적으로 두 번째 방법입니다. 어떤 사람들은 문자열을 철자하는 것을 좋아하지 않을 수 있습니다. 그렇다면 좋은 방법은 무엇입니까?
예를 들어 설명하겠습니다. Handler.ashx를 변경하면 됩니다.
Handler.ashx 코드는 다음과 같습니다
<%@ WebHandler Language="C#" Class="Handler" %>
System.Web 사용
System.Collections 사용; using System.Collections.Generic; // 키-값 수집에 필요한 Dictionary
using System.Web.Script.Serialization; //JavaScriptSerializer 클래스에 필요
public class Handler {
public void ProcessRequest (HttpContext context) {
JavaScriptSerializer jss = new JavaScriptSerializer()
context.Response.ContentType = "text/plain";
Dictionary string>( );
drow.Add("name", "Wang")
drow.Add("age", "24")
context.Response.Write(jss.Serialize( drow))
public bool IsReusable {
get {
return false
}
}
ASP의 JavaScriptSerializer .Net
jss.Serialize(drow)는 drow의 Dictionary(키와 값의 모음) 데이터 유형을 Json 데이터 형식으로 변환하는 것입니다
디버깅 결과는 아래와 같습니다. (위 예시에서는 Json 형태의 JS 객체인 key-value 다중 집합을 출력합니다.)
Json 양식 2(Js 배열)를 출력하려면 일부만 변경하면 되나요?
Handler.ashx 코드는 다음과 같습니다
코드 복사
코드는 다음과 같습니다 <%@ WebHandler Language="C#" Class="Handler" %> System.Web 사용
System.Collections 사용; System.Collections.Generic; System.Web.Script.Serialization 사용;
public class Handler: IHttpHandler {
public void ProcessRequest(HttpContext 컨텍스트) {
JavaScriptSerializer jss = new JavaScriptSerializer(); 🎜>context.ContentType = "text/plain";
List> _list = new List>(); string> drow = new Dictionary()
drow.Add("name", "Wang")
drow.Add("age", "24"); ;string, string> drow1 = 새 사전drow1.Add("name", "Zhang")
drow1.Add("age", "35"); 🎜>_list.Add(drow);
context.Response.Write(jss.Serialize(_list))
}
public bool IsReusable get {
return false
}
}
}
디버깅 결과는 아래와 같습니다. (
위 예시는 Json form 2를 출력하는 Js 배열입니다
)
기본 개념은 여기에서 거의 다룹니다. 자주 접하는 또 다른 예는 DataTabel을 첫 페이지에서 호출할 수 있도록 Json 형식으로 변환하는 방법입니다.
Handler.ashx
코드 복사
코드는 다음과 같습니다.
///
/// DataTable을 Json으로 ///
/// < ;/param>
/// drow.Add(col.ColumnName, row[col.ColumnName]) }
dic.Add(drow)
return jss .Serialize(dic)
}
실제로 Json 형식을 DataTabel 형식으로 변환하는 방법도 있습니다.
///
/// Json에서 DataTable로
/// /// < ;param name="json">///
private DataTable Json2Dtb(string json)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList dic = jss.Deserialize< ;ArrayList>(json);
DataTable dtb = new DataTable()
if (dic.Count > 0)
{
foreach (Dictionary drow in dic)
{
if (dtb.Columns.Count == 0)
{
foreach(drow.Keys의 문자열 키)
{
dtb.Columns.Add(key, drow[ key].GetType());
}
}
DataRow row = dtb.NewRow()
foreach(drow의 문자열 키) .Keys)
{
row[key ] = drow[key];
dtb.Rows.Add(row)
}
}
return dtb;
}
반환된 Json을 테이블 형식으로 표시하도록 합니다.
그러면 JS 첫 페이지는 다음과 같습니다
$.ajax({
type: "POST",
url: "Handler .ashx",
dataType: "json",
성공: function(data) {
var table = $("
");
for (var i = 0; i < data.length; i ) {
o1 = data[i]
var row = $("
|
") ;
for (o1의 키)
{
var td = $( "
| ")
td.text(o1[key].toString() );
td.appendTo(row);}
row.appendTo(table) ;
}
table.appendTo($("#back"))
}
});
위의 예를 기반으로 두 가지 추가 Js 지식 포인트
1. Json에서 데이터를 검색하기 전에 배열을 반환한 경우 data[i].name을 사용했습니다. data[i]["name"]
으로 표현할 수도 있습니다. 2. Js 객체에 액세스하려는 경우
success: function( data){
$(data).each(function(i ) {
for(key in this) // Js 객체의 모든 속성을 탐색합니다.
alert(data[i][key])//data[i].key로 변경할 수 없습니다. 여기서는 키가 위의 키 변수 대신 속성이 됩니다.
})
}
프런트엔드 Json 데이터도 백그라운드로 전달된 후 구문 분석됩니다. into DataTabel
여기에서는 DataTabel을 Json으로 부드럽게 하고 Json을 DataTabel로 변환합니다. 다운로드 주소는 다음과 같습니다.
소스 코드 다운로드
asp.net에 관심이 있는 경우 직렬화와 역직렬화에 관심이 있고 알아보고 싶은 경우