要从搜索中提取每个json属性值:extracted

要从搜索中提取每个json属性值:extracted,json,marklogic,Json,Marklogic,我不熟悉json,所以需要一些帮助 我需要获得每个属性的json值,所以当我运行下面的代码时,我会得到文本形式的json let $doc := for $sResult in ($result/search:result) let $uri := fn:data($sResult/@uri) let $docElements := $sResult/search:extracted return xdmp:from-json-stri

我不熟悉json,所以需要一些帮助 我需要获得每个属性的json值,所以当我运行下面的代码时,我会得到文本形式的json

let $doc := 
    for $sResult in ($result/search:result)
        let $uri := fn:data($sResult/@uri)
        let $docElements := $sResult/search:extracted 
        return xdmp:from-json-string($docElements/text())
return $doc
以文本格式输出:

[{"title":"xxxxxxxxx"}, {"species":"Animals"}]
[{"title":"yyyyyyyyy"}, {"species":"Animals"}]
所以我想得到类似于
$docElements/title/text()
,这样我就可以得到title json属性的值来执行一些字符串操作,然后将它们放回json对象中以获得所需的输出。
所以,不知道怎么做。

< p>修改文档的内容,考虑使用而不是<代码>搜索:SexChar()< /C> > /P> 如果要求在返回到客户机之前获取并修改JSON内容,一种方法是

  • 将每个JSON节点转换为可变映射
  • 使用map:get()和map:put()导航和修改地图
  • 将修改后的映射转换回JSON节点
  • 此方法的示意图:

    let $modifiedDocs :=
        for $inputDoc in search:resolve-nodes(...query..)
        let $tempMap := xdmp:from-json($inputDoc)
        let $_ := ... navigate and modify the map ...
        return xdmp:to-json($tempMap)
    
    为了完整性,如果目标是修改持久化的JSON文档,则迭代可能类似于以下草图:

     for $oldDoc in search:resolve-nodes(...query..)
     let $tempMap := xdmp:from-json($inputDoc)
     let $_ := ... navigate and modify the map ...
     let $newDoc := xdmp:to-json($tempMap)
     return xdmp:node-replace($oldDoc, $newDoc)
    

    希望这能有所帮助,

    感谢您的响应,但我需要提取每个json属性的值以突出显示搜索文本。此外,我不需要更改文档中的任何内容,我必须对json属性的文本执行字符串插入并发送到UI层,不需要更改db文档。请建议。