赞
踩
什么是json?
JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度,
那么,JSON到底是什么?
JSON就是一串字符串 只不过元素会使用特定的符号标注。
{} 双括号表示对象
[] 中括号表示数组
“” 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
所以 {“name”: “Michael”} 可以理解为是一个包含name为Michael的对象
而[{“name”: “Michael”},{“name”: “Jerry”}]就表示包含两个对象的数组
当然了,你也可以使用{“name”:[“Michael”,“Jerry”]}来简化上面一部,这是一个拥有一个name数组的对象
ps:现在还有很多人存在一些误区,为什么{name:‘json’}在检验时通过不了,
那是因为JSON官网最新规范规定
如果是字符串,那不管是键或值最好都用双引号引起来,所以上面的代码就是{“name”:“json”}
不要反驳,官网就是这么定义的。
解析如下的json文件:
{
"code": 0,
"data": {
"delFlag": 0,
"id": 3,
"major": 1000,
"password": "$2a$10$u---------------4mfiA0XAIG",
"realName": "张永",
"roleId": 2,
"roleName": "学生",
"schoolId": 1000,
"schoolName": "尚哲智能",
"studentId": 1000,
"token": "eo",
"username": "1"
},
"msg": "成功"
}
现在是解析“data”中的数据,首先在脚本中定义一个类,这个类包括所有的json的node,格式如下显示:
//注意:定义的字符串名字要和json文件中的node名字一样
[Serializable]
public class TokenEle
{
public string delFlag;
public string id;
public string major;
public string password;
public string realName;
public string roleId;
public string roleName;
public string schoolId;
public string schoolName;
public string studentId;
public string token;
public string username;
}
然后 定义一个用于解析的类“
[Serializable]
public class TokenAll
{
public TokenEle data;
}
下面是解析的过程:
TokenAll tokenAll = JsonUtility.FromJson<TokenAll>(logJson);
//得到你需要的值
tokenAll.data.token;
//你也可以用foreach来遍历
这样,你就会得到你需要的json文件中的值
解析jsonarray文件:
需要解析的json文件如下:我们解析data的文件
{
"code": 0,
"data": [
{
"accountTotalNumber": 10000,
"accountUseNumber": 6,
"address": "江苏省南京市建邺区信安大厦",
"contact": "xxxxxxxxxxx",
"expireDate": "2043-08-19 00:00:00",
"id": 1000,
"leader": "吴小冬",
"name": "尚哲智能",
"orgId": 1000
}
],
"msg": "成功"
}
这样带有[ ] 的json文件是组的形势存在的,也就是说,相类似的数据会有若干组,
和上面一样定义一个包含它们所有node的类:
[Serializable]
public class logJsonEle
{
public string accountTotalNumber;
public string accountUseNumber;
public string address;
public string contact;
public string expireDate;
public string id;
public string leader;
public string name;
public string orgId;
}
然后定义一个解析的类:
[Serializable]
public class logJsonAll
{
public logJsonEle[] data;
}
然后解析的过程是一样的
foreach (var item in jsonAll.data)
{
DropdowmoptionsList.Add(item.name);
StationDic.Add(item.name, item.id);
}
那么要如何生成json文件呢
其实很简单
JsonData jsonData = new JsonData();
jsonData["username"] = UserName.text;
jsonData["password"] = Password.text;
jsonData["schoolId"] = StationDic[dropdown_Station.options[dropdown_Station.value].text];
string jsl = jsonData.ToJson();
这个jsl就是生成的json格式的字符串
还有一种,是有层级的关系,如下:
data["name"] = "Czhenya";
//生成嵌套结构的json
data["info"] = new JsonData();
data["info"]["age"] = 28;
data["info"]["sex"] = "男";
还有一种生成json文件的方法.这个比价灵活
using Newtonsoft.Json;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 生成json文件
/// </summary>
public class CreatJson : MonoBehaviour
{
private Md5Info md = new Md5Info();
private void Start()
{
Md5InfoList md5list = new Md5InfoList
{
listname = name,
listmd5 = md5Infos,
listpath = path
};
md.Md5data.Add(md5list);
ToJson();
}
//数据转换为json
void ToJson()
{
md.jsonName = "JsonName";
string jsonstring = JsonConvert.SerializeObject(md);
}
}
public class Md5Info
{
public string jsonName;
public List<Md5InfoList> Md5data = new List<Md5InfoList>();
}
public class Md5InfoList
{
public string listname { set; get; }
public string listmd5 { set; get; }
public string listpath { set; get; }
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。