I think Weedpacket's comments are directed more at me than you, nogeekyet. and he's right; storing a bunch of data in a serialized or json format defeats most purposes of storing it in a database (as opposed to a flat file).
But there are some situations where it works just fine. I think your situation would be a good candidate: if I understand correctly, you need a way to keep a "snapshot" of your student's progress. If you never need to search the data (e.g., you don't need to find all students that got question #5 wrong), and you just need a way to retrieve the data "just as it was," then it might be perfectly acceptable to impose this limitation. "Snapshots" is what serialize() is intended for. json was intended for transferring data between languages, but it can be used in place of serialization, and I (personally) find it much more convenient to use.
Other info, such as names, which lessons are completed, times, retries, etc., would be better stored in their own fields in the database. And, as I mentioned above, if you need to be able to search the results independently, then you might need to use another method.
In any case, using serialize or json_encode would address your original question. Neither method would "throw away" structure (assuming your structure was reflected in how you construct the array; using key=>value pairs, etc.. -Weedpacket, if you were referring to something else, please let me know), but it would make it less immediately accessible outside of the specific process you develop for this.