josdejong/mathjs

toObject and fromObject

Open

#1,679 创建于 2019年11月22日

在 GitHub 查看
 (7 评论) (1 反应) (0 负责人)JavaScript (1,298 fork)batch import
featurehelp wanted

仓库指标

Star
 (13,832 star)
PR 合并指标
 (30 天内没有已合并 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.

贡献者指南