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);
}
}
评论