首页 学习日记正文

Json的读写操作

阿沐 学习日记 2019-08-23 574 0 unity

Json的读写操作


json:是一种格式文件,它在任何一种语言当都可以使用。它是一种轻量级的数据,

键值对,与字典类似 LitJson

用处:一般用于网络数据传输,

     如:用户登陆,用户注册,等,都会用到json数据传输

     

        在开发棋牌项目的时候,用户登陆,进入大厅都是用的json数据传送。

        微信用户登陆验证也是用的json数据传输.


在unity3d中操作json有很多方法,一般企业开发长用方法采用第三方插件(LitJson)

LitJson.dll,下载后,放到unity3d目录的Plugins文件夹下,如果没有Plugins文件夹,请创建一个


语法: 字典,或是字典套字典,或字典套数组,或是数组套字典

 string str = @"{

                ""name"":""张无忌"",

                ""age"":20,

                ""sex"":""男"",

                 ""arr"":[10,20,30,40,50]

                 }";


jsonData//是一个json的字典,专门对应{}


把字符串转成json对象,

jsonData json = JsonMapper.ToObject(str);这里的json对象就相当于是一个字典,操作是和字典一样操作

取值:json字典取值

string name = (string)json["name"];

int age = (int)json["age"];

string sex=(string)json["sex"];

if(json["arr"].isArray)

{

  foreach(object o in json["arr"])

  {

      Debug.Log((int)o);

  }

}


//把json对象转成字符串

string value = json.ToJson();

===========================================

复杂json读取

===========

该文件放在本地C盘,或是网络 名为:test.json

{

  "name":"张无忌",

  "sex":"男",

  "age":20,

  "task":[

    {

       "taskName":"打狼任务",

       "money":"10000",

       "Leval":50,

       "jiangli":"黄金套夹"

    },

    {

       "taskName":"送水任务",

       "money":"1000",

       "Leval":10,

       "jiangli":"疾风靴"

    }  

  ]

}

读取时需要注意,在json数据读取时,{}就相当于一个字典,读取时碰到{}就返回一个jsonData,碰到[]就返回数组,如下操作:

WWW www = www(@"file:///C:\\test.json");如果是网络,那么这里就要换成网络地址

yeild return www;

if(www.error==null || www.error.Length<=0)

{

   jsonData json = new jsonData(www.text);//把下载好的字符串json数据转换为json对象

   string name = (string)json["name"];

   string sex=(string)json["sex"];

   int age = (int)json["age"];

   Debug.Log(name+", "+sex+" ,"+age);

   //接下来碰到了[] 数组,数组中有两个{}内容,

   foreach(object obj in json["task"])

   {

      //取第一个{},上面说过,只要碰到{}那么都返回jsonData字典

      jsonData data = (jsonData)obj;

      Debug.Log(data["taskName"]);

      Debug.Log(data["money"]);

      Debug.Log(data["Leval"]);

      Debug.Log(data["jiangli"]);

   }   

}





以上是复杂json数据读取,大家也可以读取一下网络天气预报的json

地址如下:

WWW www = www(@"https://www.sojson.com/open/api/weather/json.shtml?city=深圳 ");如果是网络,那么这里就要换成网络地址

yeild return www;

if(www.error==null || www.error.Length<=0)

{

   Debug.Log(www.text);

   //开始解析开气预报内容,

   jsonData json = new jsonData(www.text);

   //请自行解析

}

=============================================


课堂测试:


 public void test3()

        {

            string url= "http://192.168.1.114/Test/file/task.json";

            Http.doGet(url,this,(str)=> {

                string s = str.ToString();

                JsonData data = JsonMapper.ToObject(s);

                print(s);

                print(data["name"].ToString());

                print(data["sex"].ToString());

                print(data["age"].ToString());


                JsonData json = data["task"];

             

                foreach(JsonData j in json)

                {

                    print("taskName:" + j["taskName"].ToString());

                    print("money:" + j["money"].ToString());

                    print("Leval:" + j["Leval"].ToString());

                    print("jinagli:" + j["jiangli"].ToString());

                }

            });

        }


        public void test2()

        {

            string str = @"{

                ""name"":""张无忌"",

                ""age"":20,

                ""sex"":""男"",

                 ""arr"":[10,20,30,40,50]

                 }";

            JsonData data = JsonMapper.ToObject(str);

            string name = data["name"].ToString();

            int age = (int)data["age"];

            string sex = data["sex"].ToString();

            JsonData arr = data["arr"];

            print(name+","+age+","+sex);

            foreach(JsonData json in arr)

            {

                print(json);

            }

        }


        public void test1()

        {

            string jsonstr = @"{

                                ""name"":""lili"",

                            ""age"":20,

                            ""sex"":""女""

                            }";

            JsonData data = JsonMapper.ToObject(jsonstr);

            string name = data["name"].ToString();

            int age = (int)data["age"];

            string sex = data["sex"].ToString();

            print(name+","+age+","+sex);

        }

    }







打赏

评论

Music