一直比較鍾情於json,用來做數據交互,堪稱完美!下面簡單說一下unity使用C#腳本如何解析json數據吧。
一、寫解析類,借助於JsonUtility.FromJson
直接給個例子吧
1.json文件testJson.json內容,存儲位置/Users/lpp/Downloads/testJson.json
{
"name":"小明",
"age":20,
"interests":["sing","run"]
}
2.c#解析類ModelTest.cs
[System.Serializable]
public class ModelTest
{
public string name;
public int age;
public string[] interests;
}
3.測試腳本
using UnityEngine;
using System.IO;
using System.Text;
public class JsonTest : MonoBehaviour {
// Use this for initialization
void Start () {
string jsonTest = File.ReadAllText("/Users/lpp/Downloads/testJson.json", Encoding.UTF8);
ModelTest obj = JsonUtility.FromJson<ModelTest>(jsonTest);
Debug.Log(obj.name);
Debug.Log(obj.age);
foreach (var inter in obj.interests)
{
Debug.Log(inter);
}
}
// Update is called once per frame
void Update () {
}
}
4.輸出

二、使用Newtonsoft插件,無需解析類
網上下一個Newtonsoft.Json.dll,拖到Assets下某個位置,
上面同一個json,不再需要寫解析類了,解析方式如下:
using UnityEngine;
using System.IO;
using System.Text;
using Newtonsoft.Json.Linq;
public class JsonTest : MonoBehaviour {
// Use this for initialization
void Start () {
string json = File.ReadAllText("/Users/lpp/Downloads/testJson.json", Encoding.UTF8);
JObject obj = JObject.Parse(json);
Debug.Log(obj["name"].ToString());
Debug.Log(obj["age"].ToString());
JArray ints = (JArray)obj["interests"];
foreach (var inter in ints)
{
Debug.Log(inter);
}
}
}
輸出同樣的內容。
