2016-03-11 12 views
1

Я пытаюсь преобразовать JSON в JSON-LD и задавался вопросом, могу ли я использовать алгоритм расширения JSON-LD для создания моего конвертера. Тогда я мог бы просто указать мою схему как контекст и запустить алгоритм расширения для выполнения преобразования. Проблема в том, что я не могу понять, как определить новые объекты значений в контексте, чтобы алгоритм расширения работал.Установка значения как объекта в расширении JSON-LD

Скажем, у меня есть это:

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

, и я хочу, чтобы получить это:

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

Я попытался его с помощью JSON-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?

+0

Кажется, что это не представляется возможным с алгоритмами JSON-LD. Я перешел на использование JSON в библиотеку преобразования JSON - Jolt для работы. Он также имеет некоторые ограничения, но может охватывать некоторые простые случаи. Однако имейте в виду, что Jolt нельзя использовать для изменения значений в документе JSON, только перемещая их в разные места. https://github.com/bazaarvoice/jolt – Hannu

+0

«Он также имеет некоторые ограничения, но может охватывать некоторые простые случаи. Однако имейте в виду, что Jolt нельзя использовать для изменения значений в документе JSON, только перемещая их в разные места ". Да, это была идея. «изменение значений» - это бизнес-логика, и это может быть реализовано после Jolt или как пользовательское преобразование Jolt. –

ответ

1

Это преобразование Jolt делает описанное вами преобразование.

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

Вы можете попробовать его на http://jolt-demo.appspot.com/