Есть ли стандартизированный способ хранить классы в JSON, а затем снова преобразовывать их обратно в классы из строки? Например, у меня может быть массив объектов типа Вопросы. Я хотел бы сериализовать это в JSON и отправить его (например) на страницу JavaScript, которая преобразует строку JSON обратно в объекты. Но тогда он сможет преобразовывать Вопросы в объекты типа Question, используя уже созданный мной конструктор:
function Question(id, title, description){
}
Есть ли стандартизированный способ сделать это? У меня есть несколько идей о том, как это сделать, но изобретать велосипед и так далее.
Edit:
Чтобы прояснить, что я имею в виду под классами: несколько языков могут использовать классы (JAVA, PHP, C #), и они часто будут общаться с JavaScript через JSON. На стороне сервера данные хранятся в экземплярах классов, но при их сериализации они теряются. После десериализации вы получаете структуру объектов, которая не указывает, какой тип объектов у вас есть. JavaScript поддерживает прототип ООП, и вы можете создавать объекты из конструкторов, которые станут typeof этого конструктора, например, вопрос выше. У меня была идея реализовать классы, реализующие интерфейс JSONType с двумя функциями:
public interface JSONType{
public String jsonEncode();//Returns serialized JSON string
public static JSONType jsonDecode(String json);
}
Например, класс Question будет реализовывать JSONType, поэтому, когда я сериализую свой массив, он будет вызывать jsonEncode для каждого элемента в этом массиве (он обнаруживает, что он реализует JSONType). Результат будет примерно таким:
[{typeof:"Question", id:0, title:"Some Question", description:"blah blah blah"},
{typeof:"Question", id:0, title:"Some Question", description:"blah blah blah"},
{typeof:"Question", id:0, title:"Some Question", description:"blah blah blah"}]
Код javascript затем будет видеть атрибут typeof и будет искать функцию Question, а затем будет вызывать статическую функцию для объекта Question, аналогично интерфейсу выше (да, я понимаю, что здесь есть дыра в безопасности XSS). ). Объект jsonDecode будет возвращать объект типа Question и будет рекурсивно декодировать значения JSON (например, может быть значение комментария, представляющее собой массив комментариев).