我试图将json字符串的所有值作为单个字符串。例如 在xquery xml中
let $x := <a> welcome to the world of <b> JSONiq </b></a>
return string($x)
将返回welcome to the world of JSONiq
JSONiq中以下文档的等效结果是什么:
let $y := {"a":"welcome to the world of ","b":" JSONiq"}
return xxxx($y)
结果应该相同welcome to the world of JSONiq
如果你在javascript中也知道它会很棒。
答案 0 :(得分:1)
首先,您需要使用libjn:values
或其定义来获取所有值,然后您可以使用fn:string-join
来获取单个字符串:
所以
declare namespace libjn = "http://jsoniq.org/function-library";
let $y := {"a":"welcome to the world of ","b":" JSONiq"}
return string-join(libjn:values($y) ! string(), "")
或
let $y := {"a":"welcome to the world of ","b":" JSONiq"}
return string-join($y() ! string($y(.)), "")
这可能也会返回“JSONiqwelcome to the world of”,因为对象键是无序的
答案 1 :(得分:1)
找出用于尝试的递归JSONiq脚本here。 只是做类型切换和递归调用就可以了:
welcome to the world of@JSONiq@m
&#34; @&#34;仅用于显示边框的位置,可以用&#34;&#34;:
替换var getDataSourcePromise = function(table, profileId) {
var deferred = Q.defer();
table.retrieveEntity(tableName, profileId, profileId, function(err, result, response) {
if (err) {
deferred.reject(Error(err));
}
else {
deferred.resolve(result);
}
});
return deferred.promise;
}
var promises = [];
tables.forEach(function(table, profileId) {
promises.push(getDataSourcePromise(table, profileId.toString()));
});
console.log('waiting for settle');
Q.any(promises).then(function(result) {
console.log(result);
});
赫尔曼。