Unity 数据Json格式的转换

把对象转换为字节序列的过程称为对象的序列化。

把字节序列化恢复为对象过程称为对象的反序列化。


JSON格式的转换,是一大神给我说的,让我拿来存储数据库时对一些数据的处理,感觉特别好用。但是我并没有深入的去学习,这里只是最简单的应用,以下就是一个简单的示例程序。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Newtonsoft.Json;  //需要下载Newtonsoft.Json.dll文件,放在Plugins文件夹下
using System.IO;

public class json : MonoBehaviour {

	// Use this for initialization
	void Start () {
        writeTxt();//调用写入文本函数
        StartCoroutine(testJson());//调用读取函数
	}
	
    void writeTxt()
    {
        MapPosList maplist = new MapPosList();
        maplist.points = new List<GetPointXY>();
        maplist.points.Add(new GetPointXY(100, 78));
        maplist.points.Add(new GetPointXY(54, 121));
        maplist.points.Add(new GetPointXY(56, 845));
        maplist.points.Add(new GetPointXY(221, 56));
        maplist.points.Add(new GetPointXY(454, 23));
        maplist.points.Add(new GetPointXY(10, 12));
        maplist.points.Add(new GetPointXY(45, 65));
        maplist.points.Add(new GetPointXY(898, 887));
        //用json将一个对象转成一个字符串
        string str = JsonConvert.SerializeObject(maplist);

        //下面将这个字符串写入本地文本
        StreamWriter sw;
        FileInfo t = new FileInfo("Assets/Streaming Assets/test.txt");
        if (!t.Exists)
        {
            sw = t.CreateText();
        }
        else
        {
            sw = t.AppendText();
        }
        sw.Write(str);
        sw.Close();
        sw.Dispose();
    }
    IEnumerator testJson()
    {
        WWW w = new WWW("file:///D:/Test/Assets/Streaming Assets/test.txt");
        yield return w;

        string str = w.text.Trim();
        //通过json将字符串转换成一个对象
        MapPosList data = JsonConvert.DeserializeObject<MapPosList>(str);
        Debug.Log(data.points[0].xPosition);
        yield return null;
    }
    
}
public class GetPointXY
{
    public float xPosition;
    public float yposition;
    public GetPointXY(float x, float y)
    {
        this.xPosition = x;
        this.yposition = y;
    }
}
public class MapPosList
{
    public List<GetPointXY> points;
}


这里最重要的就是JSON的两个函数:

JsonConvert.SerializeObject//将对象转换为字符串

JsonConvert.DeserializeObject//将字符串恢复为一个对象


这里备份一个Newtonsoft.Json.dll的下载链接,好像各版本都有:

http://yunpan.cn/cK5Ih7aMmy4ZH  访问密码 b6a4



posted on 2015-02-05 22:55  王亮1  阅读(2258)  评论(0编辑  收藏  举报

导航