MarkLogic fn.string преобразует массив JSON в строку, но строка показывает \ ": (двойная кавычка). Как НЕ показать это \" - PullRequest
0 голосов
/ 08 ноября 2019

Как не показывать \ "(двойная кавычка) после преобразования массива JSON в JSON String в MarkLogic с использованием fn.string?

Попробуйте xdmp.unquote / quote .... другие методы, но нене работает

У меня есть оригинальный массив JSON, подобный этому: CityState:

[
    {
        "city": "Newark", 
        "state": "NJ"
    }
    , 
    {
        "city": "Brooklyn", 
        "state": "NY"
    }
    , 
    {
        "city": "Los Angeles", 
        "state": "CA"
    }
]

fn.string (CityState) становится таким:

"[{\" city \": \" Ньюарк \ ", \" штат \ ": \" Нью-Джерси ", {\" город \ ": \" Бруклин \ ", \" штат \ ": \" Нью-Йорк \ "}, {\"город \ ": \" Лос-Анджелес \ ", \" штат \ ": \" CA \ "}]"

Ответы [ 3 ]

0 голосов
/ 09 ноября 2019

Было бы хорошо избежать необходимости преобразовывать строку. В частности, преобразование может быть рискованным, если JSON включает строковое свойство с экранированными символами.

Функции xdmp.quote () и xdmp.toJsonString () предназначены для сериализации JSON. Согласно typeof, следующее, кажется, выдает правильную строку:

xdmp.quote(xdmp.toJSON([
{
    "city": "Newark", 
    "state": "NJ"
}
, 
{
    "city": "Brooklyn", 
    "state": "NY"
}
, 
{
    "city": "Los Angeles", 
    "state": "CA"
}
]))

С какой проблемой вы столкнулись?

0 голосов
/ 10 ноября 2019

Я ценю ваше понимание! Я пытаюсь отобразить массив в Data Hub. Сущность выглядит так: «Diagnoses»: {«datatype»: «array», «items»: {«$ ref»: «# / definitions / CityState»}}}}, «CityState»: {«required»:[], "pii": [], "elementRangeIndex": [], "rangeIndex": [], "wordLexicon": [], "properties": {"city": {"datatype": "string", "collation ":" http://marklogic.com/collation/codepoint"}, "state": {"datatype": "string", "collation": "http://marklogic.com/collation/codepoint"}}

Но TDE в Data Hub не можетНе тяните информацию о «диагнозах». (все другие свойства отображаются без проблем). Я попытался вручную отобразить массив, но ничего не получилось.

После преобразования массива в строку, TDE в концентраторе данных немедленно отразил значение строки «диагнозы».

0 голосов
/ 08 ноября 2019

Мне удается удалить двойную кавычку с помощью fn.replace (). Формат выглядит отлично!

Дело закрыто.

...