using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public class JsonTest : MonoBehaviour
{
//[Serializable]
public class Person
{
[SerializeField]
public string name;
public int age;
}
[Serializable]
public class Student : Person
{
public string code;
}
[Serializable]
public class SkillData
{
public List<Person> persons;
public List<Student> students;
}
void Start()
{
//Write();
Read();
}
private static void Read()
{
string json = File.ReadAllText("a.json");
SkillData skillData = new SkillData();
skillData = JsonUtility.FromJson<SkillData>(json);
for (int i = 0; skillData.persons != null && i < skillData.persons.Count; ++i)
{
Debug.Log(skillData.persons[i].name + " " + skillData.persons[i].age);
}
for (int i = 0; skillData.students != null && i < skillData.students.Count; ++i)
{
Debug.Log(skillData.students[i].name + " " + skillData.students[i].age + " " + skillData.students[i].code);
}
}
private static void Write()
{
Person person = new Person(); person.name = "abc"; person.age = 10;
Student student = new Student(); student.name = "abc"; student.age = 123; student.code = "java";
Student student2 = new Student(); student2.name = "abc2"; student2.age = 1234; student2.code = "C#";
SkillData skillData = new SkillData();
skillData.persons = new List<Person>();
skillData.students = new List<Student>();
skillData.persons.Add(person);
skillData.students.Add(student);
skillData.students.Add(student2);
string json = JsonUtility.ToJson(skillData);
List<string> list = new List<string>();
list.Add(json);
File.WriteAllLines("a.json", list);
}
}
json的序列化,使用unity自己的JsonUtility即可。
注意序列化的类,要加上:Serializable才能序列化到json中去: