数据持久化之JSON

JSON和C#是可以相互转换的,在JSON中,{}表示对象,[]表示数组

JSON中的[1,2,3,4]对应C#中的int[1,2,3,4],

JSON中的["张三","李四","王五"]对应C#中的string["张三","李四","王五"],

[

     {"name":"张三","age":18,"sex":"男"},

     {"name":"李四","age":20,"sex":"女"},

     {"name":"王五","age":22,"sex":"男"}

]

对应C#中的person对象,即:Person[]

        JSON有两种解析方法,一种是第三方类库LitJSON(推荐),另一种是unity自带的JsonUtility(我在实际操作中出了一点Bug,故暂时不做深入研究)。

使用第三方类库LitJSON创建和解析JSON过程如下:

        首先导入LitJson.dll,并将其放入Plugins文件夹里(一定要是Plugins才行),然后就可以在vs里导入LitJson命名空间了

using UnityEngine;
using LitJson;
public class Person
{
    public string name;
    public int  age;
}
public class Persons
{
    public Person[] persons;
}
public class LitJSONDemo : MonoBehaviour {
	void Start () {
        Person p1 = new Person() ;
        p1.name = "张三";
        p1.age = 18;
        Person p2 = new Person();
        p2.name = "李四";
        p2.age = 20;

        Persons persons = new Persons();
        persons.persons = new Person[] { p1, p2 };

        //创建JSON
        string jsonStr = JsonMapper.ToJson(persons);
        Debug.Log(jsonStr);

        //解析JSON
        Persons newPersons = JsonMapper.ToObject<Persons>(jsonStr);
        Debug.Log(newPersons.persons[1].name);
    }
}

第二种:(常用)

using UnityEngine;
using LitJson;

public class LitJSONDemo : MonoBehaviour {
	void Start () {
        string jsonStr = "{'persons':[{'name':'张三','age':18},{'name':'李四','age':20}]}";
        JsonData personsJd = JsonMapper.ToObject(jsonStr);
        JsonData p = personsJd["persons"];

        Debug.Log(p[0]["name"]+","+p [0]["age"]+"      "+ p[1]["name"] + "," + p[1]["age"]);

        foreach (JsonData person in p)
        {
            Debug.Log(person["name"].ToString()+","+ (int)person["age"]);
        }
    }
}

 

猜你喜欢

转载自blog.csdn.net/qq_40323256/article/details/82555424
今日推荐