Ballerina是否支持类似于XML导航的JSON导航?

nr9pn0ug  于 2023-11-20  发布在  其他
关注(0)|答案(2)|浏览(96)

对于Ballerina中的XML文件,如果我们想访问树中任何位置嵌套的具有给定名称的节点,可以使用以下方式访问它。

// x/**/<name> - for every element e in x, retrieves every element named name in
// the descendants of e.
 xml f = x/**/<name>;
 io:println("f",f,"\n\n");

字符串
有没有类似的方法来访问一个具有给定名称的JSON对象键,该键可以嵌套在主JSON对象中的任何位置?

ijnw1ujt

ijnw1ujt1#

对于Ballerina中的XML文件,如果我们想访问树中任何位置嵌套的具有给定名称的节点,我们可以使用以下方式访问它。

xml f = x/**/<name>;
io:println("f",f,"\n\n");

字符串
总之,OP指的是Convenient XML navigation
有没有类似的方法来访问一个具有给定名称的JSON对象键,该键可以嵌套在主JSON对象中的任何位置?
没有至少现在还没有

v2g6jxz6

v2g6jxz62#

有没有类似的方法来访问一个具有给定名称的JSON对象键,该键可以嵌套在主JSON对象中的任何位置?
不能。但是您可以通过使用可选的字段访问和查询表达式来存档所需的结果。

import ballerina/io;

public function main() returns error? {
    json store = {
        store: {
            book: [
                {
                    category: "reference",
                    author: "Nigel Rees",
                    title: "Sayings of the Century"
                },
                {
                    category: "fiction",
                    author: "Evelyn Waugh",
                    title: "Sword of Honour"
                },
                {
                    category: "fiction",
                    author: "Herman Melville",
                    title: "Moby Dick"
                },
                {
                    category: "fiction",
                    author: "J. R. R. Tolkien",
                    title: "The Lord of the Rings"
                }
            ],
            bicycle: {
                color: "red",
                price: 19.95
            }
        }
    };

    json|error books = store?.store?.book;
    if books is error {
        return;
    }

    string[] titles = from json item in <json[]>books
        select check item?.title;
    io:println(titles);
}

字符串
如果我们以上面的JSON为例,我们可以通过可选的字段访问和查询表达式来解决特定的场景。
也请参考这些:

相关问题