오래 전, 나는 모든 행동이 JSON 그들의 결과는 최상위 래퍼 객체에 투입 할 것이다 반환 내 애플 리케이션을위한 코딩 표준을 설정 : 잘 작동하고있다사용자 정의 JSON 직렬화
var result = {
success: false,
message: 'Something went wrong',
data: {} // or []
}
좋은 코드 표준화 행복을 제공했습니다.
그러나 오늘날 서버 측 코드는 항상 반환되는 항목의 전체 직렬화를 수행한다고 가정합니다. 이제 "데이터"페이로드가 이미 잘 구성된 JSON 문자열 인이 사람들 중 한 명을 직렬화하려고합니다.
이 일하고 있었다 일반적인 패턴입니다 : 그것은 나누기
bool success = false;
string message = "Something went wrong";
object jsonData = "[{\"id\":\"0\",\"value\":\"1234\"}]"; // Broken
dynamic finalData = new { success = success, message = message, data = jsonData };
JsonResult output = new JsonResult
{
Data = finalData,
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
MaxJsonLength = int.MaxValue
};
return output;
는 "데이터"요소가 적절한 JSON으로 브라우저에 도달 할 때 문자열로받은, 그리고 될 것입니다 객체 (위의 예에서는 배열)가 있어야합니다.
"원시로 직렬화"라고하는 특성으로 속성을 꾸밀 수있는 방법이 있습니까, 아니면이 작업을 수행하기 위해 사용자 지정 JSON serializer를 작성해야할까요?
'json.parse'를 사용해야합니다. 전체 세부 정보보기 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse –
글쎄, 기술적으로 당신은 자신의 계약과 표준을 위반하고 있습니다. 이전에는 * object *를 기대했지만, 이제는 문자열을 전달합니다. 그것은 나에게 나쁜 일을하는 것처럼 보이지만,이 문자열을 피할 방법이 없다면'data = JsonSerializer.Deserialize (jsonData)'를 쓸 수 있습니다. 그래도 나중에 직렬화되지 않도록 직렬화 할 것입니다. – Rob
json.parse가 브라우저 끝입니다.서버 측에서 직렬화를 조작하려고합니다. 롭, 당신은 정확히 문제에 직면 해 있습니다 ... 나는 그것을 직렬화하고 싶지 않습니다. 단지 즉시 다시 직렬화하고 싶습니다. (그리고 실제로는 이미 완벽하게 좋은 JSON이었던 것을 감싸고 있습니다.) 나는 해결책을 모은 것 같아요, 내일 게시 할 것입니다. 둘 다 감사합니다! – Eric