LitJson是第三方插件
JsonUtility是Untiy自带的
一、JsonUtility
创建Json
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//先导入System命名空间才有Serializable关键字
using System;
//使用JsonUtility必须要在转成Json数据的类上加关键字
[Serializable]
public class Person{
public string name;
public int age;
}
public class JsonUtilityDemo : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Person person=new Person();
person.name="李逍遥";
person.age=18;
//转成json字符串
string jsonStr=JsonUtility.ToJson(person);
Debug.Log(jsonStr);
}
}
解析Json
//解析{"name":李逍遥,"age":18}
Person s=JsonUtility.FromJson<Person>(jsonStr);
//<>中填写的是这个Json最外层的类型,在例子中只有一个数据就是Person型
Debug.Log(s.name);
//输出的是李逍遥
二、LitJson
使用前的准备工作
需要在Unity项目中创建一个文件夹Plugins,然后将LitJson.dll放入文件夹下即可(文件夹必须为这个名字)
第一种方法创建和解析Json
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//导入命名空间
using LitJson;
public class Hero{
public string name;
public int age;
}
public class LitJsondemo : MonoBehaviour
{
void Start()
{
func1();
}
void func1()
{
Hero hero1=new Hero();
hero1.name="超人";
hero1.age=40;
//转化成Json字符串
string jsonStr=JsonMapper.ToJson(hero1);
Debug.Log(jsonStr);
//解析Json字符串
Hero ho=JsonMapper.ToObject<Hero>(jsonStr);
Debug.Log(ho.name);
}
}
第二种方法创建和解析Json
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//导入命名空间
using LitJson;
public class Hero{
public string name;
public int age;
}
public class LitJsondemo : MonoBehaviour
{
void Start()
{
//func1();
func3();
}
//假设需要构建{“name”:“超人”,power:90}这个Json,使用方法二进行创建JSON不需要对应的Hero类
void func2(){
JsonData jd=new JsonData();
//jd.SetJsonType(JsonType.Array);设置jd中的
jd["name"]="超人";
jd["power"]=90;
jd.ToJson();
//假设需要构建{"heros":[{"name":"超人","power":90},{"name":蝙蝠侠,“power”:80}]}
JsonData herosJD=new JsonData();
JsonData hero1JD=new JsonData();
hero1JD["name"]="超人";
hero1JD["power"]=90;
JsonData hero2JD=new JsonData();
hero2JD["name"]="蝙蝠侠";
hero2JD["power"]=80;
JsonData heros=new JsonData();
heros.SetJsonType(JsonType.Array);
heros.Add(hero1JD);
heros.Add(hero2JD);
herosJD["heros"]=heros;
}
//第二种方法解析JSON
void func3(){
//假设接收到这个Json
string jsonStr="{'heros':[{'name':'超人','power':90},{'name':'蝙蝠侠','power':80}]}";
JsonData herosJD=JsonMapper.ToObject(jsonStr);
JsonData heros=herosJD["heros"];
//heros[1]["name"];这样就能够获取到蝙蝠侠
foreach (JsonData heroJD in heros)
{
Debug.Log(heroJD["name"].ToString());
}
}
}