【问题标题】:Using Jsoniq to display some of the string in json使用Jsoniq显示json中的部分字符串
【发布时间】:2016-09-09 18:26:33
【问题描述】:

你们能教我如何使用 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

【问题讨论】:

    标签: javascript json xquery jsoniq


    【解决方案1】:

    从 JSON 文档中获取一些叶值是通过导航语法完成的,即. 表示法。

    它不需要for 子句,因为. 隐含了迭代。

    假设对象存储在变量$content 中,$content.books.reader 将导航到具有字段ReadHaventRead 的对象。调用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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 2021-08-15
      • 2021-06-14
      • 2013-11-15
      • 1970-01-01
      • 2012-07-25
      • 2020-12-21
      相关资源
      最近更新 更多