[EXT] Re: XLAT Question

g4-lisz at tonarchiv.ch g4-lisz at tonarchiv.ch
Tue Apr 14 15:15:48 UTC 2026


April 14, 2026 at 4:12 PM, "Brian Julin" <BJulin at clarku.edu mailto:BJulin at clarku.edu?to=%22Brian%20Julin%22%20%3CBJulin%40clarku.edu%3E > wrote:

> 
> Alan DeKok via Freeradius-Users <freeradius-users at lists.freeradius.org> wrote:
> 
> > 
> > On Apr 13, 2026, at 4:59 PM, g4-lisz at tonarchiv.ch wrote:
> > 
> > > 
> > > I read about the default / alternation syntax for string expansion, like %{%{Foo}:-bar}.
> > > 
> > >  But what I needed is this:
> > >  if (foo != '' ) ? '[ %{foo} ]' : 'null'.
> > > 
> > >  This is for a JSON request string in a REST module configuration. The request property in question must be a JSON array ( [ .. ] ) or 'null'.
> > > 
> > >  I could use Unlang IF and declare the complete JSON request in different versions depending on foo. But I would prefer to do this with expansion inside the JSON string definition, if possible.
> > > 
> >  You'll have to use 'if'. There is a mods-available/json, and you can do:
> > 
> >  %{json_encode:&foo}
> > 
> >  Except that if "foo" doesn't exist, it returns an empty json object: "{}"
> > 
> You could use another attribute and assign the json text to that attribute using if/else, then base the REST stuff off that attribute. That at least keeps your REST query DRY. There are some temporary internal-use-only attributes in the dictionary for stuff like this.
> 
Hi Brian,

Thanks for the hint! That's actually a simple solution I hadn't thought of.

Meanwhile, I wrote my own xlat function. But for some reason, my last email to the list didn't get through.

Cheers,
Till


More information about the Freeradius-Users mailing list