Fix recipe parsing

In MSVC, the strings returned by catajson::as_string() get freed right away (after the end of the statement), so the pointers returned by .c_str() immediately become invalid.

I'm surprised this wasn't crashing, and I'm also surprised this worked at all in GCC...