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"]);
}
}
}