반응형
ASP.NET ASHX를 사용한JSON 반환
웹 사이트의 자동 완성 기능을 만들고 있습니다.지금까지 javascript 부분은 끝났습니다.또한 일치하는 사용자의 MembershipUser 개체를 가져올 수 있습니다.
다음 형식으로 JSON을 반환해야 합니다.
{
query:'Li',
suggestions:['Liberia','Libyan Arab Jamahiriya','Liechtenstein','Lithuania'],
data:['LR','LY','LI','LT']
}
ashx의 코드는 다음과 같습니다.
public void ProcessRequest (HttpContext context) {
System.Web.Script.Serialization.JavaScriptSerializer JsonSerializer;
string query = context.Request.QueryString["query"];
System.Web.Security.MembershipUserCollection Users = System.Web.Security.Membership.GetAllUsers();
context.Response.ContentType = "application/json";
foreach (System.Web.Security.MembershipUser User in Users)
{
if (User.UserName.StartsWith(query.ToLower()))
{
context.Response.Write(query + Environment.NewLine);
context.Response.Write(User.Email);
}
}
}
원하는 형식으로 json을 반환하려면 어떻게 해야 하나요?감사해요.
context.Response.Write(
jsonSerializer.Serialize(
new
{
query = "Li",
suggestions = new[] { "Liberia", "Libyan Arab Jamahiriya", "Liechtenstein", "Lithuania" },
data = new[] { "LR", "LY", "LI", "LT" }
}
)
);
이 기능은 다음과 같습니다.
using System;
using System.Data;
using System.Web;
using System.Linq;
using System.Collections;
using Newtonsoft.Json;
public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "application/json";
string quer = context.Request["query"];
DataTable _t = AMC.Core.Logic.Root.Storage.ExecuteQuery("SELECT [tag_name] FROM [tags] Where [tag_name] like '%' + @ke + '%'", new System.Data.SqlClient.SqlParameter("ke", quer));
DataRow[] list = new DataRow[_t.Rows.Count];
_t.Rows.CopyTo(list, 0);
var wapper = new {
query = quer
, suggestions = (from row in list select row["tag_name"].ToString()).ToArray()
//, data = new[] { "LR", "LY", "LI", "LT" }
};
context.Response.Write(JsonConvert.SerializeObject(wapper));
}
뉴턴소프트.Json은 다음 URL에 있습니다.http://json.codeplex.com/releases/
원하는 반환을 기반으로 계약이 있는 클래스를 만든 다음 해당 클래스의 인스턴스에서 JSON Serializer를 사용하여 반환 콘텐츠를 만듭니다.
[DataContract]
public class YourReturnObject {
[DataMember(Name="query")]
public String Query { get;set;}
[DataMember(Name="suggestions")]
public String[] Suggestions { get;set;}
[DataMember(Name="data")]
public String[] OtherData{ get;set;}
}
당신의 json은 두 배열 모두에 대한 인덱스를 유지해야 하기 때문에 조금 어색합니다. 제가 좀 더 이런 것을 제안해도 될까요?
{
query: 'Li',
data: [{id:'LR', text:'Liberia'}, {id:'LY', text:'Libyan Arab Jamahiriya'}, ...]
}
언급URL : https://stackoverflow.com/questions/8392413/asp-net-returning-json-with-ashx
반응형
'programing' 카테고리의 다른 글
Woocommerce에서 취소된 주문으로 고객에게 이메일 보내기 (0) | 2023.03.21 |
---|---|
json 결과를 날짜로 변환 (0) | 2023.03.21 |
하위 테마에서 상위 테마 javascript를 재정의하는 중 (0) | 2023.03.21 |
AngularJS : 디렉티브에서 글로벌이벤트에 바인드 하는 최선의 방법 (0) | 2023.03.21 |
jQuery Ajax의 Bool 매개 변수가 PHP에서 리터럴 문자열 "false"/"true"로 수신되었습니다. (0) | 2023.03.21 |