Для сериализации и десериализации объектов вам необходимо создать класс C# (в вашем случае должен быть класс Course), который может быть [Serializable]
.
Сначала ваш Json должен быть допустимым, что это такое, вы можете проверить его здесь .
Для сериализации и десериализации вы можете использовать JsonUtility до определенного момента, потому что он не десериализует зубчатые массивы, сложные объекты и т. д. c. Я рекомендую использовать стороннее программное обеспечение, например Newtonsoft , или реализовать свой собственный метод сериализации / десериализации для вашего способа .
Изменить:
Ваш JSON файл должен быть без части "Science =", он должен выглядеть так:
{
"CourseName":"Science",
"No_Of_Ques":4,
"Ques_Data":[
{ "Quesion":"which is the biggest planet in the solar system?",
"Answer":"jupiter",
"options":["mars","earth","venus","jupiter"]
},
{ "Quesion":"How many planets are there in solar system?",
"Answer":"Eight",
"options":["Seven","Nine","Five","Eight"]
},
{ "Quesion":"which is the closest planet to the sun?",
"Answer":"mercury",
"options":["mars","saturn","venus","mercury"]
},
{ "Quesion":"How many moons does jupiter have?",
"Answer":"12",
"options":["5","13","9","12"]
}
]
}
Изменить: для вашего комментария, я думаю, вы неправильно поняли, как обрабатывать отношения между файлами и переменные.
Конечно, вы хотите иметь (или, по крайней мере, так кажется) по одному файлу для каждого типа, поэтому в этом случае приведенный выше текст будет вашим файлом Science. json.
Когда вы сохраняете эту информацию, вы будете делать то же самое, что и вы:
path = Application.dataPath + "/QnA.json";
string json = File.ReadAllText(path);
Course scienceCourse = JsonUtility.FromJson<Course>(json); //notice the name of the variable!
Итак, как вы можете видеть для имени переменной, вы будете читать КАЖДЫЙ JSON для каждого курса.
Другой способ сделать это - сохранить все курсы в одном файле Json, а затем получить их как МАССИВ курсов -> Course[] allCourses