- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将一个大型 JSON-LD 文件作为我用 Java 编写的算法的输入。因此,我打算为此使用 JSONLD-JAVA。
JSONLD-JAVA页面显示了一个读取 JSON-LD 文件的示例,但不是用于导航或遍历它,也不是访问其中的单个对象。相反,它指的是 JSON-LD和 JSON-LD API有关特定可能操作的详细信息的规范。
然而,JSON-LD 规范只是定义了 JSON-LD 的语法和语义,并没有说明如何访问它们,当然也不应该,它只是格式的规范。我期望在 JSON-LD API 规范中描述这种操作,但它只描述了将整个 JSON-LD 文件转换为不同形式(压缩、扩展、展平和转换为 RDF)的操作。它似乎不包括访问对象的操作(例如,访问对象的键值对)。
所以我猜我们应该读取 JSON-LD 文件并将其展开或展平,然后将其作为纯 JSON 进行访问。但是 JSONLD-JAVA 方法只返回 Object
的实例,所以我不清楚如何使用这些对象来获取 JSON 键值对。唯一的异常(exception)似乎是 frame
方法,它返回一个 Map,但我不太清楚什么是框架。 JSON-LD 规范不包含“框架”一词,而且 JSON-LD API 规范有非常简洁的解释,似乎无助于理解如何访问对象的键值对。
我只有来自 JSONLD-JAVA 方法的 Object 实例的事实也使得它看起来很难使用一些 JSON 库来使用它们,除非我使用一些知道这些对象的内部格式的 JSON 库由JSONLD-JAVA形成,但是JSONLD-Java的页面没有提到任何这样的库。
我期望能够读取 JSON-LD 文件,然后在 Java 中以编程方式访问或操作它,并拥有与主要概念相对应的 Java 类,例如 JSONLDObject
提供其键值对的方法。
当我阅读以上几页时,我觉得它们是为那些已经知道一些我不知道的事情的人准备的。所以也许我错过了什么。否则,是否有关于使用 JSONLD-JAVA 或什至仅使用 JSONLD API 来遍历对象的教程?
最佳答案
如果您阅读链接到的 JSONLD-JAVA 页面上的文档,它以一个注释示例开头:
// Open a valid json(-ld) input file
InputStream inputStream = new FileInputStream("input.json");
// Read the file into an Object (The type of this object will be a List, Map, String, Boolean,
// Number or null depending on the root object in the file).
Object jsonObject = JsonUtils.fromInputStream(inputStream);
// Create a context JSON map containing prefixes and definitions
Map context = new HashMap();
// Customise context...
// Create an instance of JsonLdOptions with the standard JSON-LD options
JsonLdOptions options = new JsonLdOptions();
// Customise options...
// Call whichever JSONLD function you want! (e.g. compact)
Object compact = JsonLdProcessor.compact(jsonObject, context, options);
// Print out the result (or don't, it's your call!)
System.out.println(JsonUtils.toPrettyString(compact));
第二条评论很有趣,所以让我为您突出显示:
Read the file into an
Object
(The type of this object will be aList
,Map
,String
,Boolean
,Number
ornull
depending on the root object in the file).Object jsonObject = JsonUtils.fromInputStream(inputStream);
关键是 JSONLD 是 JSON,当你像上面那样将它加载到内存中时,你可以通过转换 Object
来导航 JSON 结构视情况而定。
让我们看一下来自 JSON-LD specification 的示例 #3:
{
"@context":
{
"name": "http://schema.org/name", // ← This means that 'name' is shorthand for 'http://schema.org/name'
"image": {
"@id": "http://schema.org/image", // ← This means that 'image' is shorthand for 'http://schema.org/image'
"@type": "@id" // ← This means that a string value associated with 'image' should be interpreted as an identifier that is an IRI
},
"homepage": {
"@id": "http://schema.org/url", // ← This means that 'homepage' is shorthand for 'http://schema.org/url'
"@type": "@id" // ← This means that a string value associated with 'homepage' should be interpreted as an identifier that is an IRI
}
}
}
因此,如果您想要 @id
的 image
值,您可以这样做:
Map<String, Object> root = (Map) jsonObject;
Map<String, Object> context = (Map) root.get("@context");
Map<String, Object> image = (Map) root.get("image");
String imageId = (String) image.get("@id");
关于java - 如何使用 JSONLD-JAVA 遍历、导航和访问 JSON-LD 文件中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49715194/
我有一个用例,我有一个 Json 数据,我必须将其转换为 JSONLD 格式。 第一个问题:这可以轻松完成吗,就像我可能缺少的一些 API 一样? 第二个问题:如果没有,那么需要采取哪些步骤。 所以
我正在使用 Node-WebKit 创建桌面应用程序。该应用程序基本上是创建文档(员工日常工作的详细信息),任何注册用户都可以对这些文档发表评论。我正在创建的文档将被分成几个部分。用户将对特定部分发表
我正在尝试使用 Nuxt.js 在一个脚本标记中返回多种结构类型。我正在使用这个插件:https://github.com/ymmooot/nuxt-jsonld 在我的网站上 https://kas
我正在尝试使用 Nuxt.js 在一个脚本标记中返回多种结构类型。我正在使用这个插件:https://github.com/ymmooot/nuxt-jsonld 在我的网站上 https://kas
假设我有一个 Vue 应用 http://www.example.com/?url=https://example-data.com/activity-sets/example/sample.json
我需要将一个大型 JSON-LD 文件作为我用 Java 编写的算法的输入。因此,我打算为此使用 JSONLD-JAVA。 JSONLD-JAVA页面显示了一个读取 JSON-LD 文件的示例,但不是
我是一名优秀的程序员,十分优秀!