精华内容
下载资源
问答
  • LitJson

    2019-09-24 20:19:24
    这次谈一下在实习里新碰到的一个Unity插件——LitJson(也可以去官网下载最新版)。 开场白 LitJson是一个开源项目,比较小巧轻便,安装也很简单,在Unity里只需要把LitJson.dll放到Plugins文件夹下,并在代码...

    距离上一次更新博客已有一段时间了,一实习就懒了,嘿嘿。这次谈一下在实习里新碰到的一个Unity插件——LitJson(也可以去官网下载最新版)。

     

    开场白

     

    LitJson是一个开源项目,比较小巧轻便,安装也很简单,在Unity里只需要把LitJson.dll放到Plugins文件夹下,并在代码的最开头添加 “Using LitJson”就可以了。简单来说,LitJson的用途是实现Json和代码数据之间的转换,一般用于从服务器请求数据,得到返回的Json后进行转换从而在代码里可以访问。具体请详见LitJson的官网

    关于和服务器数据之间的转换在此就不再赘述,官网以及一些博客里已有涉及,而且也比较详细了。

    这里,主要谈一下LitJson的其他用途。

    想象一个场景,你需要显示一个家庭信息的表格,这个表格的每一行代表了你的一个家人的名字、年龄、手机号码和住址等信息。因为这个信息不大,用数据库实在是大材小用,而且也很麻烦。

    我们可以用一个数据结构来在代码里表示每个家人的信息:

     

    [csharp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
     
    1. public class FamilyInfo {  
    2.     public string name;  
    3.     public int age;  
    4.     public string tellphone;  
    5.     public string address;  
    6. }  

     

     


    然后用一个List来表示家庭信息表:

     

    [csharp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
     
    1. public class FamilyList {  
    2.     public List<FamilyInfo> family_list;  
    3. }  

     

     


    最后,打印信息:

    [csharp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
     
    1. private void DisplayFamilyList(FamilyList familyList) {  
    2.     if (familyList == null) return;  
    3.           
    4.     foreach (FamilyInfo info in familyList.family_list) {  
    5.         Debug.Log("Name:" + info.name + " Age:" + info.age + " Tel:" + info.tellphone + " Addr:" + info.address);  
    6.     }  
    7. }  
    
    

    准备工作都已经做好,那么数据到底在什么时候初始化呢?

     

    第一种方法

     

    一种方法是我们可以在编辑面板里直接初始化。为了达到目的,我们还需要告诉Unity编辑器在面板里显示我们的FamilyInfo,以便我们可以随机编辑,这是通过在类名前声明

    [System.Serializable]来实现的。

    具体代码如下:

     

    [csharp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
     
    1. sing System.Collections;  
    2. using System.Collections.Generic;  
    3. using LitJson;  
    4.   
    5. [System.Serializable]  
    6. public class FamilyInfo {  
    7.     public string name;  
    8.     public int age;  
    9.     public string tellphone;  
    10.     public string address;  
    11. }  
    12.   
    13. [System.Serializable]  
    14. public class FamilyList {  
    15.     public List<FamilyInfo> family_list;  
    16. }  
    17.   
    18. public class LitJsonSample : MonoBehaviour {  
    19.       
    20.     public FamilyList m_FamilyList = null;  
    21.       
    22.     // Use this for initialization  
    23.     void Start () {  
    24.         DisplayFamilyList(m_FamilyList);  
    25.     }  
    26.       
    27.     private void DisplayFamilyList(FamilyList familyList) {  
    28.         if (familyList == null) return;  
    29.           
    30.         foreach (FamilyInfo info in familyList.family_list) {  
    31.             Debug.Log("Name:" + info.name + "       Age:" + info.age + "        Tel:" + info.tellphone + "      Addr:" + info.address);  
    32.         }  
    33.     }  
    34.       
    35.     // Update is called once per frame  
    36.     void Update () {  
    37.       
    38.     }  
    39. }  

     

     

    运行结果如下:

     

    但是这种方法灵活性太差,而且很容易发生错误。例如当我们不小心改变了变量名称,那么我们在面板里编辑好的数据就都会不见了!下面介绍另一种比较好的方法——把数据保存为本地的一个文本文件。

     

    第二种方法

     
    正如前面所说,我们把信息存成一个表格,并保存为txt格式。注意,为了能使用LitJson解析,txt中必须使用Json格式。
    family.txt如下:
    1. {  
    2.     "family_list": [  
    3.         {  
    4.             "name" : "candycat",  
    5.             "age" : 21,  
    6.             "tellphone" : "xxx",  
    7.             "address" : "xxx"  
    8.         },  
    9.         {  
    10.             "name" : "candycat#",  
    11.             "age" : 22,  
    12.             "tellphone" : "xxx",  
    13.             "address" : "xxx"  
    14.         },  
    15.         {  
    16.             "name" : "candycat##",  
    17.             "age" : 23,  
    18.             "tellphone" : "xxx",  
    19.             "address" : "xxx"  
    20.         }  
    21.     ]  
    22. }  

    代码如下:
    [csharp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
     
    1. using UnityEngine;  
    2. using UnityEditor;  
    3. using System.Collections;  
    4. using System.Collections.Generic;  
    5. using LitJson;  
    6.   
    7. public class FamilyInfo {  
    8.     public string name;  
    9.     public int age;  
    10.     public string tellphone;  
    11.     public string address;  
    12. }  
    13.   
    14. public class FamilyList {  
    15.     public List<FamilyInfo> family_list;  
    16. }  
    17.   
    18. public class LitJsonSample : MonoBehaviour {  
    19.       
    20.     public FamilyList m_FamilyList = null;  
    21.       
    22.     // Use this for initialization  
    23.     void Start () {  
    24.         ReloadFamilyData();  
    25.           
    26.         DisplayFamilyList(m_FamilyList);  
    27.     }  
    28.       
    29.     private void ReloadFamilyData()  
    30.     {             
    31.         UnityEngine.TextAsset s = Resources.Load("Localize/family") as TextAsset;   
    32.         string tmp = s.text;  
    33.         m_FamilyList = JsonMapper.ToObject<FamilyList>( tmp );  
    34.         if ( JsonMapper.HasInterpretError() )  
    35.         {  
    36.             Debug.LogWarning( JsonMapper.GetInterpretError() );  
    37.         }  
    38.     }  
    39.       
    40.     private void DisplayFamilyList(FamilyList familyList) {  
    41.         if (familyList == null) return;  
    42.           
    43.         foreach (FamilyInfo info in familyList.family_list) {  
    44.             Debug.Log("Name:" + info.name + "       Age:" + info.age + "        Tel:" + info.tellphone + "      Addr:" + info.address);  
    45.         }  
    46.     }  
    47.       
    48.     // Update is called once per frame  
    49.     void Update () {  
    50.       
    51.     }  
    52. }  

    有几点注意的地方:
    • Resources.Load("Localize/family")表示加载family文件,但一定要注意要把family.txt文件放在Resources文件夹下,只有这样Resources.Load才能够访问到,在这个例子里family的绝对路径为“Resources/Localize/family”。这是因为Resources文件夹是Unity默认的资源文件夹,有着特殊的用途,这里我还不是很了解,以后要深入学习一下;
    • Resources.Load参数中的路径名一定不可以包含后缀,这里也就是.txt后缀;
     
    输出结果和第一种方法完全一样。
     

    注意

    使用LitJson解析时,解析类(如上面的FamilyInfo)
    • 若包含Dictionary结构,则key的类型必须是string,而不能是int类型(如需表示id等),否则无法正确解析!
    • 若需要小数,要使用double类型,而不能使用float,可后期在代码里再显式转换为float类型。
     
     

    结束语

     
    这个教程比较简单,希望大家可以从这个小例子里举一反三!我实习所做的这个项目里就经常使用这样的方法来初始化一些表格,这样也方便项目管理。感谢阅读

    转载于:https://www.cnblogs.com/littleYellowDoggy/p/5106031.html

    展开全文
  • LITJSON

    2019-06-12 18:27:00
    LITJSON litJson的使用非常方便,可以直接使用JsonMapper。 当然也可以使用更底层的JSonReader和JSonWriter来实现自己的JSonMaper 布置也非常方便(只需要将下载的LitJson文件夹放到Assets下任意目录即可)...

    LITJSON

    litJson的使用非常方便,可以直接使用JsonMapper。

    当然也可以使用更底层的JSonReader和JSonWriter来实现自己的JSonMaper

    布置也非常方便(只需要将下载的LitJson文件夹放到Assets下任意目录即可)

    https://blog.csdn.net/u011618339/article/details/76149492

     

    posted on 2019-06-12 18:27 时空观察者9号 阅读(...) 评论(...) 编辑 收藏

    展开全文
  • LitJSON

    2013-03-01 15:13:00
    官网http://litjson.sourceforge.net/http://sourceforge.net/projects/litjson/files/ public class json { /// <summary> /// 序列化 /// </summary> /// &...

    官网
    http://litjson.sourceforge.net/
    http://sourceforge.net/projects/litjson/files/

    public class json
    {      
            /// <summary>
            /// 序列化
            /// </summary>
            /// <param name="obj"></param>
            /// <returns></returns>
            public static string objtojson(object obj)
            {
                return JsonMapper.ToJson(obj);
            }
            /// <summary>
            /// 反序列化
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="data"></param>
            /// <returns></returns>
            public static T jsontoobj<T>(string data)
            {
               return JsonMapper.ToObject<T>(data); 
            } 
    }
    

    转载于:https://www.cnblogs.com/foxtk/archive/2013/03/01/2938793.html

    展开全文
  • Litjson

    2019-10-08 03:27:05
    本文介绍使用LitJson,并用C#语言来介绍使用JSON,可以在C#应用程序,web程序,还有Unity3d C#脚本中使用。   第一步:先去下载LitJson并导入当前的项目。 第二步:litJson的几个实例方式  1.使用JsonData...

    http://www.cnblogs.com/peiandsky/archive/2012/04/20/2459219.html


    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

                  如果曾经使用过Json,就会清楚Json可以分为两个部分:

    1.         Json Object(A collection of name/value pairs)

    2.         JSON Array (An ordered list of values)

    解析JSON的开源包非常多,在各种场合使用非常广泛,尤其长于网络传输。

    本文介绍使用LitJson,并用C#语言来介绍使用JSON,可以在C#应用程序,web程序,还有Unity3d C#脚本中使用。

     

    第一步:先去下载LitJson并导入当前的项目。

    第二步:litJson的几个实例方式

                  1.使用JsonData来处理生成json:{"name":"peiandsky","age":28,"sex":"male"}

          

    JsonData data = new JsonData();
    
            data["name"] = "peiandsky";
    
            data["age"] = 28;
    
            data["sex"] ="male";
    
            string  json1= data.ToJson();


     

          2.对象中嵌套对象:{"name":"peiandsky","info":{"sex":"male","age":28}}

           

    JsonData data2 = new JsonData();
    
            data2["name"] = "peiandsky";
    
            data2["info"] = new JsonData();
    
            data2["info"]["sex"] = "male";
    
            data2["info"]["age"] = 28;
    
    string  json2 = data2.ToJson();

     

     

     

    3.         将上述两种方式的Json解析到JsonData

     

     JsonData jsonData2 = JsonMapper.ToObject(json2);
    
      Debug.Log(jsonData2["name"] + "    " + data2["info"]["sex"]);
    

     

    4.         使用JsonMapper来处理Json

    Player player = new Player();
    
            player.name = "peiandsky";
    
            player.age = 23;
    
            player.sex = "male";
    
            string json=JsonMapper.ToJson(player);


     

     

    5.         解析4中的json

    Player player2 = JsonMapper.ToObject<Player>(json);


     

    6.         使用最原始的方式生成Json

    将数组转换成json:["one","two","three","four"]

          

    JsonWriter writer = new JsonWriter();
    
            writer.WriteArrayStart();
    
            writer.Write("one");
    
            writer.Write("two");
    
            writer.Write("three");
    
            writer.Write("four");
    
            writer.WriteArrayEnd();

    将复合对象转换成json字符串:{"book":{"title":"android game!","author":"pei","bookdetail":{"pages":429,"about":null}}}

     

    JsonWriter writer2 = new JsonWriter();
    
     
    
            writer2.WriteObjectStart();
    
            writer2.WritePropertyName("book");
    
     
    
            writer2.WriteObjectStart();
    
            writer2.WritePropertyName("title");
    
            writer2.Write("android game!");
    
            writer2.WritePropertyName("author");
    
            writer2.Write("pei");
    
            writer2.WritePropertyName("bookdetail");
    
     
    
            writer2.WriteObjectStart();
    
            writer2.WritePropertyName("pages");
    
            writer2.Write(429);
    
            writer2.WritePropertyName("about");
    
            writer2.Write(null);
    
            writer2.WriteObjectEnd();
    
     
    
            writer2.WriteObjectEnd();
    
     
    
            writer2.WriteObjectEnd();
    
            Debug.Log(writer2.ToString());

     

     

     

     

     

    这种方式非常不方便,不建议使用。

     

    在使用LitJson中,建议使用JsonData,JsonMapper来处理Json的编码和解析。

    Person[] p_array = { p,p,p};
    
            string json_array=JsonMapper.ToJson(p_array);
    
            Debug.Log(json_array);
    
     
    
            JsonData pa = JsonMapper.ToObject(json_array);
    
     
    
            Debug.Log(pa.IsArray+"     "+pa.Count);
    
     
    
            for (int i = 0; i < pa.Count;i++ )
    
            {
    
                Debug.Log(pa[i]["name"]+"-"+pa[i]["age"]+"-"+pa[i]["score"]+"-"+pa[i]["birth"]);
    
                int age = int.Parse(pa[i]["age"].ToString());
    
                Debug.Log(age);
    
            }


    转载于:https://www.cnblogs.com/nafio/p/9137180.html

    展开全文
  • litjson

    2016-07-29 17:15:24
    JsonData jsonData = JsonMapper.ToObject(text);
  • LitJson类库

    2020-11-09 09:04:06
    LitJson类库
  • LitJson.rar

    2020-08-28 11:20:25
    LitJson好资源LitJson好资源LitJson好资源LitJson好资源LitJson好资源LitJson好资源LitJson好资源LitJson好资源LitJson好资源LitJson好资源LitJson好资源LitJson好资源LitJson好资源
  • LitJson源码

    2018-12-05 08:40:27
    LitJson源码,可用于.net,mono, Unity ,Ue4,的json传输数据
  • LitJson.zip

    2021-02-25 10:40:07
    LitJson.zip
  • LitJson.dll

    2020-09-25 17:48:34
    LitJson.dll压缩包LitJson.dll压缩包LitJson.dll压缩包 C#使用类库,解析、创建json对象
  • Unity LitJson插件

    2021-02-26 10:46:08
    Unity LitJson插件。
  • LitJSON.dll

    2020-09-02 15:09:59
    LitJSON类库,下载后直接导入项目中即可使用,记得在脚本开头加“Using LitJson”命名空间。
  • LitJson C#

    2014-04-22 11:17:46
    LitJson 文章地址 http://blog.csdn.net/huutu/article/details/24298349

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,020
精华内容 408
关键字:

litjson