josdejong/mathjs

toObject and fromObject

開放

#1,679 建立於 2019年11月22日

 (7 則留言) (1 個反應) (0 位負責人)JavaScript (1,314 個分叉)batch import
featurehelp wanted

倉庫指標

星標
 (15,065 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

I can serialize and de-serialize an expression to JSON as shown here: https://mathjs.org/docs/core/serialization.html

In my application the expression is part of a bigger JSON which is de-serialized at a higher level. I would need to de-serialize an expression from an object like this:

const node = math.parse('age >= 21 ? 999 + 5 : 111 + 2')
const objectExpression = node.toObject();
const node2 = math.fromObject(objectExpression)

Of course I could do something like this but it's not optimal because I would have to serialize the object to JSON first:

const node = math.parse('age >= 21 ? 999 + 5 : 111 + 2')
const json = JSON.stringify(node);
const expression = JSON.parse(json, math.revive);

Is there a way to do this without calling the revive function recursively? I tried to use map-keys-deep but the reviver gets called for a parent leaf and then for the child and it seems that the order need to be reversed to use the revive function.

貢獻者指南