2014-07-18 1 views
0

개체, 문자열 및 HTML 문자열이 포함 된 JSON 파일에서 HTML 문자열 만 선택하려고합니다.JSON 스키마를 사용하여 특정 유형의 모든 값 가져 오기 (HTML 문자열)

{ 
    "person1": { 
    "name": "Marcus", 
    "bio": "<h2>Academic</h2><p>Lorem ipsum <em>dolores</em> sit amet. Conquistat ergo sum.</p>" 
    }, 
    "person2": { 
    "name": "Philipp", 
    "bio": "<h2>Academic</h2><p>Ipsum lorem <em>vencit</em> sit amet. Conquistat ergo sum.</p>" 
    } 
} 

내가 키 "format" : "html" 도입 한 HTML 문자열에서 일반 문자열을 분리하기 :이 JSON이 같은 모습입니다.

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 

    "definitions": { 
    "person": { 
     "type": "object", 
     "properties": { 
     "name": { 
      "type": "string" 
      }, 
     "age": { 
      "type": "integer" 
      }, 
     "bio": { 
      "type": "string", 
      "format": "html" 
     } 
     }, 
     "required": ["name", "age", "bio"] 
    } 
    } 
} 

질문 : 어떻게 "format" : "html" 속성이있는 모든 값을 선택합니까?

어쩌면 사용자 지정 키/값을 사용하는 것이 가장 세련된 솔루션이 아니므로 standard solution으로 전환하는 방법에 대해 생각하고 있습니다. HTML 문자열을 가져 오려는 이유는 유효성을 검사해야하고 sanitized 일 필요가 있기 때문입니다.

응용 프로그램 자체는이 JSON/JSON 스키마 것은 내 도움 노드 모듈에 대한 권장 사항이 높게 평가되도록 :)

답변

0

내가 /person/bio에 JSON 포인터를 사용하여이 문제를 해결하기 위해, Node.js를 구축하다 :

function getValue(object, path) { 
    object = object || {}; 

    if (path === "") { 
     return object; 
    } 

    var fragments = path.split("/"), 
    iter = 0, key, 
    length = fragments.length, 
    result = object; 

    while (result != null && iter < length) { 
     key = fragments[iter]; 
     if (key !== "#") { 
      result = result[key]; 
     } 
     iter += 1; 
    } 

    return result || null; 
}