[MarkLogic Dev General] Constructing JSON objects

Michael Blakeley mike at blakeley.com
Thu Mar 12 18:51:40 PDT 2015


I tend to avoid declaring functions or variables in any namespace that I know other code is using. But you're doing it with your eyes open, and that's probably ok. Someday a server update may conflict. But if that happens, I'm sure you'll catch it in testing, and fix it before it breaks production.

Right?

-- Mike  

> On 12 Mar 2015, at 17:35 , Will Thompson <wthompson at jonesmcclure.com> wrote:
> 
> Thanks all. The ML8 constructors look very nice.
> 
> Mike - That's what I was looking for, thanks. I ended up writing something similar using json:array before I saw the reply, but I like your implementation better. Also, I appropriated the json: prefix because it looked nicer...for example, is there any reason why this would be bad (other than ML might decide implement it at some later date)? 
> 
> declare function json:new(...)
> 
> -W
> 
>> On Mar 12, 2015, at 4:38 PM, Sudhakar Reddy <Sudhakar.Reddy at marklogic.com> wrote:
>> 
>> You can also build using JSON node constructors available in ML 8
>> let $json-node := object-node { "id": number-node {12345},
>> 				"a" : array-node {1,2,3} ,
>> 				"b" : fn:true(),
>> 				"c" : number-node {1234},
>> 				"d" : array-node{
>> 						number-node {12345},
>> 						text {"test"},
>> 						boolean-node {fn:true()},
>> 						array-node {'aaa','bbb','ccc'}},
>> 						"e" : object-node { "x": "hello world",
>> 						"y": fn:false(),
>> 						"z" : array-node {1, 'a', fn:true()}
>> 						},
>> 				"g": null-node {}
>> 				}  
>> 				return $json-node
>> 
>> Thanks
>> Sudhakar
>> 
>> 
>> 
>> On 3/11/15, 6:52 PM, "Erik Hennum" <Erik.Hennum at marklogic.com> wrote:
>> 
>>> Hi, Will:
>>> 
>>> You can use json:object() instead of map:map() for a mutable object where
>>> order is important.
>>> 
>>> I think the API is the same as that of map:map otherwise.
>>> 
>>> JSON nodes, like XML nodes, are immutable.
>>> 
>>> Erik Hennum
>>> 
>>> ________________________________________
>>> From: general-bounces at developer.marklogic.com
>>> [general-bounces at developer.marklogic.com] on behalf of Will Thompson
>>> [wthompson at jonesmcclure.com]
>>> Sent: Tuesday, March 10, 2015 5:09 PM
>>> To: MarkLogic Developer Discussion
>>> Subject: [MarkLogic Dev General] Constructing JSON objects
>>> 
>>> Is there a nice way to construct a JSON object similar to how maps can be
>>> constructed? Typically I would just do it this way:
>>> 
>>> xdmp:to-json(
>>> map:new((
>>>  map:entry('x', 1),
>>>  map:entry('y', 2)
>>> )))
>>> 
>>> Except that order is important in this specific scenario, and this ruins
>>> ordering.
>>> 
>>> -Will
>>> _______________________________________________
>>> General mailing list
>>> General at developer.marklogic.com
>>> http://developer.marklogic.com/mailman/listinfo/general
>>> _______________________________________________
>>> General mailing list
>>> General at developer.marklogic.com
>>> http://developer.marklogic.com/mailman/listinfo/general
>> 
>> _______________________________________________
>> General mailing list
>> General at developer.marklogic.com
>> http://developer.marklogic.com/mailman/listinfo/general
> 
> _______________________________________________
> General mailing list
> General at developer.marklogic.com
> http://developer.marklogic.com/mailman/listinfo/general
> 



More information about the General mailing list