==== 요약 ====
JSON 응답 형식을 지정하는 데 도움이 필요합니다. 모델 및 컨트롤러와 함께 ASP.Net을 사용하고 있습니다.
==== 정보 ====
ASP.Net에서 웹 API를 작업 중입니다. 일부 데이터를 가져 와서 DataTable에 넣는 SQL 백엔드가 있습니다. 내 DataTable은 다음과 같습니다.
+ ---- + ------- + ------- + | 아이디 | 제목 | 사용자 | + ---- + ------- + ------- + | 1 | 테스트 | user1 | | 1 | 테스트 | user2 | + ---- + ------- + ------- +
참고 : 하나의 레코드에 여러 사용자가있을 수 있으므로 두 행 모두에 대해 ID가 "1"입니다 ( "ID"는 실제 SQL 테이블 행의 고유 ID가 아니라 외래 키입니다 ... 어쨌든 나는 다이 그레스 ...)
다음과 같은 C # 모델을 만들었습니다.
public class Record { public int ID {get; 세트; } 공개 문자열 제목 {get; set;} 공개 문자열 사용자 {get; 설정;} }
마지막으로 내 컨트롤러는 다음과 같습니다.
DataBaseHelper db = 새로운 DataBaseHelper (); public IEnumerable Get_Record (string id) { // DataTable DataTable 가져 오기 dt = new DataTable (); dt = db.GetRecord (id); foreach (dt.Rows의 DataRow 행) { yield return new Record { ID = row.Field ( "ID"), Title = row.Field ( "Title"), Users = row.Field ( "Users") }; } }
API를 호출하면 다음과 같이 표시됩니다.
[ -{ ID : 1, 제목 : "Test", 사용자 : "user1" }, -{ ID : 1, 제목 : "Test", 사용자 : "user2" } ]
==== 질문 ====
가능한 경우 다음과 같이 JSON 응답을 받으려면 어떻게해야합니까?
{ "응답": [ { ID : 1, 제목 : "Test", 사용자 : [ {name : "user1"}, {name : "user2"} ] } ] }
그것이 가능하지 않다면 이것도 좋을 것입니다.
"응답": [ { ID : 1, 제목 : "Test", 사용자 : "user1" }, { ID : 1, 제목 : "Test", 사용자 : "user2" } ]
@Shahrooz Jefri의 답변을 확장하려면 HttpResponseMessage
익명 객체를 반환 할 수있는를 반환 할 수 있지만 필요에 따라 형식이 지정된 결과를 얻으려면 Get_Record
메서드 를 수정해야합니다 .
public HttpResponseMessage Get_Record(string id)
{
// Get DataTable
DataTable dt = new DataTable();
dt = db.GetRecord(id);
var records = dt.Rows.Select(r => new Record()
{
ID = row.Field("ID"),
Title = row.Field("Title"),
Users = row.Field("Users")
});
return this.Request.CreateResponse(HttpStatusCode.OK,
new
{
Response = new
{
ID = records.First().ID,
Title = records.First().Title,
Users = records.Select(r => r.Users)
}
});
}
이 접근 방식을 사용하면 먼저에 대한 호출의 결과를 개체 의 db.GetRecord
로 변환 합니다.IEnumerable<Record>
Record
여기에서 서식 요구 사항에 맞게 익명 개체를 만들 수 있습니다. 내 대답에는 오류 검사를 적용하지 않았습니다. db.GetRecord
결과를 반환하지 않는 경우에 대한 호출로 인해 응답 개체 의 ID
및 Title
필드를 채울 때 예외가 발생 하므로 records.First()
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다