나는 객체 목록으로 응답하고자하는 WCF 서비스를 사용하고 있습니다. 엔티티 프레임 워크에서 내 객체를 생성하므로 일부 순환 참조가 있고 기본 직렬화가 실패하므로 실제로 List를 반환 할 수 없습니다. 따라서 익명 형식을 사용하여 필요한 속성 만 포함하는 개체 목록을 만듭니다. 내가 이렇게하면Json.NET을 사용하여 ASP.NET WebForms에서 Json으로 WCF 응답
function btn_onclick() {
var srv = new DDSProjectManagement.ProjectsService();
srv.DoWork(Res, null, null);
}
function Res(dataList) {
var divObj = document.getElementById('tablePos');
var name = 'Name';
var desc = 'Description';
var tableStart = '<table><tbody><tr><th>Name</th><th>Description</th></tr>';
var tableContent = '';
var tableEnd = '</tbody></table>';
for (var i = 0; i < dataList.length; i++) {
tableContent += '<tr><td>' + dataList[i].Name + '</td><td>' + dataList[i].Value + '</td></tr>';
}
divObj.innerHTML = tableStart + tableContent + tableEnd;
}
이 매개 변수 가져 자바 스크립트 :
[OperationContract]
public string DoWork()
{
using (X ent = new X())
{
var modules = from p in ent.Modules select new { Name = p.Name, Value = p.ID };
return JsonConvert.SerializeObject(modules);
}
}
이제이 테이블 안에 결과를 렌더링 내 자바 스크립트입니다 : 이것은 내가 사용하고있어 Json.NET은 무엇인가 그냥 문자열이며 그것은 내 개체의 목록으로 볼 수 없습니다. 물론, 그것은 Json 문자열이어야하며 객체를 추출 할 수 있도록 파싱을 시도 할 수 있습니다. 하지만 지금은 자바 스크립트를 사용하고 서비스를 수정하고 싶습니다. 예를 들어, 다음 내 서비스를 변경하면 잘 작동합니다 :이 문제가 없습니다 있도록
public List<SimpleObject> DoWork()
{
return new List<SimpleObject>() { new SimpleObject("Florin", 1), new SimpleObject("Andrei", 2) };
}
SimpleObject는 EntityFramework의 개체가 아닙니다. 기본 serializer가 Json이고 Javascript가 기본적으로 동일한 매개 변수를 가져야한다고 가정합니다. Json 문자열입니다.
내 질문은 내 JS 메서드를 사용하여 문자열을 건물로 익명 형식 개체의 JS 내 목록을 보내려면 어떻게합니까 작동하지 않았다? 미리 감사드립니다.
JSON을 JavaScript에서 파싱해야합니다. 다른 방법으로는 할 수 없습니다. (XML과 같이 다른 형식으로 직렬화 할 수는 있지만 근본적으로 같은 문제 일 것입니다.) – Pointy