2013-10-10 2 views
0

브라우저에서 처리하려는 사용자 지정 JSON 객체가 있습니다.정의 된 '스키마'가있는 객체로 JSON 구문 분석

문제는 기존 개체와 일치해야한다는 것입니다.

그들은없는 실수 할 수 있습니다

  • 일부 필드를 포함하는 것을 잊지.
  • 입력란을 잘못 입력하거나 의도적으로 새 입력란을 추가하십시오.

처리 방법이 있습니까?

기본적으로 foo와 bar 멤버가있는 객체가있는 경우 사용자의 json이 {} 일 경우 기본 설정을 원합니다. 실수로 {bart : "asdf";}와 같은 유형을 보내면 (typo on 'bar') 그런 다음 예외를 생성하려고합니다.

+0

체크 아웃 http://json-schema.org/ – Bergi

답변

0
var default_object = { ... }; 
var allowed_keys = [ "key1", "key2", ... ]; 
var new_object = default_object.clone(); 
for (var key in json_object) { 
    if (json_object.hasOwnProperty(key)) { 
     if (allowed_keys.indexOf(key) == -1) { 
      // Report error here 
     } else { 
      new_object[key] = json_object[key]; 
     } 
    } 
} 

내가 위에서 사용 된 clone 방법을 작성하는 방법에 대한 here 참조하십시오. jQuery를 사용하는 경우 $.extend()을 사용하여이 코드 중 일부를 단순화 할 수 있습니다.

+0

아 .. 이런 식으로 생각하고 있었지만 그렇게 한 네이티브 라이브러리가 필요했습니다. – burtonator

+0

다른 하나의 문제는 계층 적/중첩 된 객체가 필요하다는 것입니다. foo.bar.cat.dog와 같습니다. – burtonator

+0

'jQuery.extend'에는 재귀 적 머지를 할 수있는 옵션이 있습니다. 그러나, 그것은 검증 체크를하지 않습니다 - 그것은 특별한 요구 사항처럼 보입니다. 대부분의 API는 인식하지 못하는 옵션을 무시합니다. – Barmar