使用 Jsoniq 显示 json 中的一些字符串
Using Jsoniq to display some of the string in json
你们能教我如何使用 jsoniq 显示 robin cruose 和 tom jones 这两个书名吗?我已经进行了一些研究,但无论我怎么做,它总是错的。
{
"books": {
"reader": {
"Read": {
"book": {
"name": "Robinson Crusoe",
"author": "Daniel Defoe"
}
},
"HaventRead": {
"book": {
"name": " Tom Jones",
"author": "Henry Fielding "
}
},
"_type": "Ken Rawing"
}
}
}
这就是我在 zorba.io 中的做法,它出现了很多错误,我非常确定我的做法是完全错误的。请教我
for $reader in collection("books"),
$read in collection("books"),
$book in collection ("books")
where $reader.type eq "Ken Rawing"
return $book
从 JSON 文档中获取一些叶值是使用导航语法完成的,它是 .
表示法。
它不需要 for
子句,因为 .
.
隐含了迭代
假设对象存储在变量 $content
中,$content.books.reader
导航到具有字段 Read
和 HaventRead
的对象。调用 jnlib:values()
然后在其中获取两个对象,然后一个继续一直到带有 .book.name
.
的名称
查询是这样的(大部分实际上是输入文档本身,通常存储在文件或数据存储中):
jsoniq version "1.0";
import module namespace jnlib = "http://jsoniq.org/function-library";
(: That's the input document, stored in a global variable :)
declare variable $content := {
"books": {
"reader": {
"Read": {
"book": {
"name": "Robinson Crusoe",
"author": "Daniel Defoe"
}
},
"HaventRead": {
"book": {
"name": " Tom Jones",
"author": "Henry Fielding "
}
},
"_type": "Ken Rawing"
}
}
};
(: That's the query :)
jnlib:values($content.books.reader).book.name
注意 jsoniq version="1.0";
,它会激活本机 JSONiq 解析器(try.zorba.io
上的默认解析器是 XQuery)。
也可以在zorba.io
中测试
备注
JSONiq 也作为 XQuery 的扩展存在,在这种情况下,导航是通过函数调用完成的,因为 .
是 XML 名称中的有效字符。但是,不 推荐使用它,除非你也有 XML 需要处理。
jnlib:values($content("books")("reader"))("book")("name")
你们能教我如何使用 jsoniq 显示 robin cruose 和 tom jones 这两个书名吗?我已经进行了一些研究,但无论我怎么做,它总是错的。
{
"books": {
"reader": {
"Read": {
"book": {
"name": "Robinson Crusoe",
"author": "Daniel Defoe"
}
},
"HaventRead": {
"book": {
"name": " Tom Jones",
"author": "Henry Fielding "
}
},
"_type": "Ken Rawing"
}
}
}
这就是我在 zorba.io 中的做法,它出现了很多错误,我非常确定我的做法是完全错误的。请教我
for $reader in collection("books"),
$read in collection("books"),
$book in collection ("books")
where $reader.type eq "Ken Rawing"
return $book
从 JSON 文档中获取一些叶值是使用导航语法完成的,它是 .
表示法。
它不需要 for
子句,因为 .
.
假设对象存储在变量 $content
中,$content.books.reader
导航到具有字段 Read
和 HaventRead
的对象。调用 jnlib:values()
然后在其中获取两个对象,然后一个继续一直到带有 .book.name
.
查询是这样的(大部分实际上是输入文档本身,通常存储在文件或数据存储中):
jsoniq version "1.0";
import module namespace jnlib = "http://jsoniq.org/function-library";
(: That's the input document, stored in a global variable :)
declare variable $content := {
"books": {
"reader": {
"Read": {
"book": {
"name": "Robinson Crusoe",
"author": "Daniel Defoe"
}
},
"HaventRead": {
"book": {
"name": " Tom Jones",
"author": "Henry Fielding "
}
},
"_type": "Ken Rawing"
}
}
};
(: That's the query :)
jnlib:values($content.books.reader).book.name
注意 jsoniq version="1.0";
,它会激活本机 JSONiq 解析器(try.zorba.io
上的默认解析器是 XQuery)。
也可以在zorba.io
中测试备注
JSONiq 也作为 XQuery 的扩展存在,在这种情况下,导航是通过函数调用完成的,因为 .
是 XML 名称中的有效字符。但是,不 推荐使用它,除非你也有 XML 需要处理。
jnlib:values($content("books")("reader"))("book")("name")