Unity3d LitJson 的使用

Json官网 http://json.org/
1、将LitJson.dll导入到Assets/Plugins/目录下,在类中通过using LitJson;就可以使用LitJson提供的一些接口了。

2、关于LitJson会使用类JsonMapper和数据类型JsonData就可以了。JsonMapper主要提供了JsonMapper.ToJson和JsonMapper.ToObject两个方法。(说白了其实就是string和JsonData或者其他对象之间的相互转化)

json.txt 就是一个对象,包含三个属性

{
    "Name": "Thomas More", 
    "Age": 57, 
    "Birthday": "02/07/1478 00:00:00"
}

JsonOperation .cs

using System;
using System.IO;
using UnityEngine;
using LitJson;

public class Person
{
    public string   Name { get; set; }
    public int      Age { get; set; }
    public DateTime Birthday { get; set; }

    public override string ToString()
    {
        return Name + Age.ToString() + Birthday.ToString();
    }
}

public class JsonOperation : MonoBehaviour
{

    private string path = "";
    private string path2 = "";

    // Use this for initialization
    void Start ()
    {
        path = Application.dataPath + "/json.txt";
        path2 = Application.dataPath + "/json2.txt";
        PersonToJson();
        JsonToPerson();
    }

    public void PersonToJson()
    {
        Person xianglin = new Person();

        xianglin.Name = "xianglin";
        xianglin.Age = 26;
        xianglin.Birthday = new DateTime(1991,7,4);

        string json_xianglin = JsonMapper.ToJson(xianglin);
        Debug.Log(json_xianglin);
    }

    public void JsonToPerson()
    {
        string json = File.ReadAllText(path);

        Person thomas = JsonMapper.ToObject<Person>(json);

        Debug.Log(thomas.ToString());
    }
}

输出

3、当JasonMapper.ToObject不带类型的时候,返回值就是JsonData。

    public void JsonToPerson(string path)
    {
        JsonData thomas = JsonMapper.ToObject(File.ReadAllText(path));

        Debug.Log(thomas["Name"]+thomas["Age"].ToString()+thomas["Birthday"]);
    }

另一个例子: 一个数组里面包含着三个对象,可以使用Array,List
json2.txt

[
    {
        "name": "Json", 
        "age": 20, 
        "skill": "noting"
    }, 
    {
        "name": "Haria", 
        "age": 24, 
        "skill": "jump"
    }, 
    {
        "name": "Jsfg", 
        "age": 42, 
        "skill": "attack"
    }
]
public void JsonToPerson2()
    {
        #region 通过JsonData来解析对象数组
        Debug.Log("使用JsonData来解析对象数组");
        List<Person2> jsons = new List<Person2>();
        JsonData jsonData = JsonMapper.ToObject(File.ReadAllText(path2));

        foreach (JsonData data in jsonData)
        {
            Person2 per = new Person2();
            per.Name = data["name"].ToString();
            per.Skill = data["skill"].ToString();
            per.Age = int.Parse(data["age"].ToString());

            jsons.Add(per);
        }

        foreach (Person2 person2 in jsons)
        {
            Debug.Log(person2.ToString());
        }
        #endregion

        #region 使用类型来解析
        Debug.Log("使用类型来解析对象数组");
        Person2[] jsonArray = JsonMapper.ToObject<Person2[]>(File.ReadAllText(path2));

        List<Person2> jsons2 = JsonMapper.ToObject<List<Person2>>(File.ReadAllText(path2));
        Debug.Log("Array 集合");
        foreach (Person2 person2 in jsonArray)
        {
            Debug.Log(person2);
        }
        Debug.Log("List 集合");
        foreach (Person2 person2 in jsons2)
        {
            Debug.Log(person2);
        }
        #endregion
    }

参考:
http://blog.csdn.net/u011618339/article/details/76147890
http://www.cnblogs.com/Firepad-magic/p/5532650.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值