Okay, sorry for posting so frequently. I've got it to work in 2 steps: by first converting it to a Json and then to the required struct:

    auto serialStr1 = "{\"studentId\":300453,\"questionId\":65708,\"questionRevision\":1,\"action\":\"correct\",\"timeTakenSeconds\":10,\"eventTimestamp\":\"2016-01-01T00:00:03\",\"metadata\":\"\",\"frontend\":\"\"}";
    auto j4 = parseJsonString(serialStr1);
    writeln(j4);
    auto ss4 = deserializeWithPolicy!(JsonSerializer, TypedefPolicy, QuestionAttempts)(j4);
    writeln(ss4);

Is this the idiomatic way to accomplish this task?

Also, if I'm making a REST interface using registerRestInterface, how can I pass tell registerRestInterface to use my custom policy?

Thanks,
Sorry again for making you read all the above posts uselessly.