【问题标题】:Setting value as object in JSON-LD expansion在 JSON-LD 扩展中将值设置为对象
【发布时间】:2016-03-11 08:41:31
【问题描述】:

我尝试将JSON 转换为JSON-LD,并想知道是否可以使用JSON-LD 扩展算法来创建我的转换器。然后我可以将我的模式指定为上下文并运行扩展算法来进行转换。问题是我无法弄清楚如何在上下文中定义新的值对象,以便扩展算法起作用。

假设我有这个:

{
  "timestamp": "2016-01-08T11:01:38Z"
}

我想得到这个:

{
  "prefix:time": {"prefix:start": "2016-01-08T11:01:38Z"}
}

我已经在 J​​SON-LD 操场上尝试过,如下所示:

{
  "@context": {
    "timestamp": {
      "@id": "prefix:time",
      "@value": {"prefix:start": "@value"}
    }
  },
  "timestamp": "2016-01-08T11:01:38Z"
}

但展开后的结果是这样的:

[
  {
    "prefix:time": [
      {
        "@value": "2016-01-08T11:01:38Z"
      }
    ]
  }
]

有没有办法使用JSON-LD 扩展(或其他)算法将值替换为新的JSON 对象?

【问题讨论】:

  • 这似乎用 JSON-LD 算法是不可能的。我继续使用 JSON 到 JSON 转换库 - Jolt 来完成这项工作。它也有一些限制,但可以涵盖一些简单的情况。但是,请记住,Jolt 不能用于更改 JSON 文档中的值,只能将它们移动到不同的位置。 github.com/bazaarvoice/jolt
  • "它也有一些限制,但可以涵盖一些简单的情况。但是请记住,Jolt 不能用于更改 JSON 文档中的值,只能将它们移动到不同的位置。"是的,就是这个想法。 “更改值”是业务逻辑,可以在 Jolt 之后实现,也可以作为自定义 Jolt 转换实现。

标签: json data-conversion expansion json-ld linked-data


【解决方案1】:

此 Jolt 变换执行您描述的变换。

[
  {
    "operation": "shift",
    "spec": {
      "timestamp": "prefix:time.prefix:start"
    }
  }
]

你可以在http://jolt-demo.appspot.com/试试看

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多