There are two ways to represent an expresssion in JSON:
As a plain string. This usually works very well, is easy to debug and understand:
{"expr":"(a>b && a>c) || (a==0)"}
As a parse tree. Generally, parse trees are hard to understand at best, and often impossible to debug (as usual in the sense "it would be too much effort").
If you go the parse tree approach, then you need to define JSON fragments to represent each piece of the tree and then recursively build it.
And if you have no idea what I'm talking about: I strongly suggest solution #1.