我尝试仅从包含对象,字符串和HTML字符串的JSON文件中选择HTML字符串。这就是JSON的样子:
{
"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>"
}
}
为了将正常字符串与HTML字符串分开,我引入了密钥"format" : "html"
。
{
"$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。
应用程序本身是在node.js上构建的,所以对于帮助我使用这个JSON / JSON模式的节点模块的建议非常感激:)
答案 0 :(得分:0)
为了解决这个问题,我使用了一个指向/person/bio
的JSON指针:
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;
}