Erik addressed the most likely issue/question. As a follow-up , for clarification - your 2 examples are fundamentally different use cases of json:transform-to-xml() The first use (without the $config) is intended *only* for the pre-V8 use case of transforming arbitrary JSON into a 'black box' XML format with 100% fidelity. While it is a fairly readable format, Its not intended to be used directly - it is an implementation used by V7 before we had native JSON data types in the database. It is maintained for backwards compatibility for that use case only (if you have existing data in V7 format).
The second example (with the 'custom' strategy and a $config) is not intended as a refinement or otherwise replacement for the first case. Its designed to allow for custom transformations between JSON and XML - possibly bi-directionally - at the expense of losing 100% fidelity. Many of these use cases are no longer necessary in V8 due to native support for JSON directly. It *can* be used as you have done - it should not be confused with the first case ( making any modifications at all to the 'basic' strategy transformation produces XML which will break any code expecting the V7 internal format), and I don't recommend it for API's that have a JSON interface - its much better to use that directly if possible. For API's that accept either JSON or XML - the formats for both are well defined - but the transformation between those formats can be very complex to get 100% right. So if you have JSON and using an API that accepts JSON - its much easier and better (and more efficient) to not attempt to transform it to XML. ----------------------------------------------------------------------------- David Lee Lead Engineer MarkLogic Corporation d...@marklogic.com Phone: +1 812-482-5224 Cell: +1 812-630-7622 www.marklogic.com<http://www.marklogic.com/> From: general-boun...@developer.marklogic.com [mailto:general-boun...@developer.marklogic.com] On Behalf Of Erik Hennum Sent: Monday, May 04, 2015 9:16 AM To: MarkLogic Developer Discussion Subject: Re: [MarkLogic Dev General] json namespace changes in json:transform-from-json($input) Hi, Indrajeet: In MarkLogic 8, you would typically store JSON directly as native JSON and not converted to XML. The direct approach will improve performance and maintainability. In the particular case, xdmp:unquote() will turn the input string into a JSON document that can be inserted into the database. The particular case looks like the input to a search request. Is there is a specific reason it must be encoded as XML? Erik Hennum ________________________________ From: general-boun...@developer.marklogic.com<mailto:general-boun...@developer.marklogic.com> [general-boun...@developer.marklogic.com] on behalf of Indrajeet Verma [indrajeet.ve...@gmail.com] Sent: Monday, May 04, 2015 6:00 AM To: MarkLogic Developer Discussion Subject: [MarkLogic Dev General] json namespace changes in json:transform-from-json($input) Hi, While upgrading ML6 to ML8, I needed to modify the JSON format and I did it based on my understanding on ML8 JSON handling however my senior is not convince with this solution so wanted to know if my approach is not best fit and could be better solution. Please someone take a look on my code and suggest any better solution? let $input := '{"docTitle":"histories: Search for apple", "type":"Search", "searchParameter":{"page":1, "pageLength":10}}' When I am using json:transform-from-json($input), getting below output with namespace "http://marklogic.com/xdmp/json/basic" <json type="object" xmlns="http://marklogic.com/xdmp/json/basic"> <docTitle type="string"> histories: Search for apple </docTitle> <type type="string"> Search </type> <searchParameter type="object"> <page type="number"> 1 </page> <pageLength type="number"> 10 </pageLength> </searchParameter> </json> However I wanted the results with the namespace "http://marklogic.com/json" so I have coded like below, let $custom := let $config := jsonl:config("custom") return ( map:put($config, "element-namespace", "http://marklogic.com/json"), $config ) let $json := try{ (jsonl:transform-from-json($input, $custom)) } catch ($e) {()} let $json := <json type="object" xmlns="http://marklogic.com/json">{$json}</json> return $json output: <json type="object" xmlns="http://marklogic.com/json"> <docTitle> histories: Search for apple </docTitle> <type> Search </type> <searchParameter> <page> 1 </page> <pageLength> 10 </pageLength> </searchParameter> </json> Regards, Indy
_______________________________________________ General mailing list General@developer.marklogic.com Manage your subscription at: http://developer.marklogic.com/mailman/listinfo/general