经常用到Newtonsoft 去解析json字符串,这里记录一下供大家学习
首先提供一个json的文本 (不会写的请百度,这里提供一个例子用来测试)
{
"width": 50,
"height": 20,
"info": [{
"line": "1,2,3;4,5,6"
}, {
"line": "1,2,3;4,5,7"
}, {
"line": "1,2,3;4,5,8"
}, {
"line": "1,2,3;4,5,9"
}, {
"line": "1,2,3;4,5,10"
}]
}
1.读取json里面的信息:
引用命名空间(多余的可以删除)
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Linq;
public List<Vector3> coordinateInfo = new List<Vector3>(); //用来接收解析过的坐标信息
/// <summary> /// /解析Json坐标文本信息 /// </summary> /// <param name="str0">json文本信息</param> public void AnalysisJsonInfo(string str0) { JObject jObject = JsonConvert.DeserializeObject<JObject>(str0); string width = jObject["width"].Value<string>(); string height = jObject["height"].Value<string>(); string info = jObject["info"][0]["line"].ToString(); Debug.LogError(width); Debug.LogError(height); Debug.LogError(info); Debug.LogError(jObject["info"].Count()); foreach (var item in jObject["info"]) { Debug.Log(item["line"]); string tmp = item["line"].ToString(); string[] tmpsplt = tmp.Split(';'); for (int i = 0; i < tmpsplt.Length; i++) { string[] num = tmpsplt[i].Split(','); float x = float.Parse(num[0]); float y = float.Parse(num[1]); float z = float.Parse(num[2]); Vector3 tmpVec = new Vector3(x, y, z); coordinateInfo.Add(tmpVec); } } }
好了,运行我们的unity 可以看到已经成功将坐标信息添加到我们的 coordinateInfo 里面
2.如何将我们需要的信息作为json来传递?
首先写一个来作为信息传递的类
public class SendClassInfo { public string id; //唯一id public string httpInfo;// 上传地址 public string versionNumber;//版本号 }
这里我需要传递三个参数,当然你也可以自行添加
如何传递?
我们通过 JsonConvert.SerializeObject() 来反序列化
public void SendTest() { SendClassInfo sendClassInfo = new SendClassInfo(); sendClassInfo.id = "465416541321"; sendClassInfo.httpInfo = "https://home.cnblogs.com/u/lk95"; sendClassInfo.versionNumber = "1.0";
string tmphttpInfo = JsonConvert.SerializeObject(sendClassInfo); Debug.LogError(tmphttpInfo); }
运行unity ,可以看到打印出来:{"id":"465416541321","httpInfo":"https://home.cnblogs.com/u/lk95","versionNumber":"1.0"}
好了,这里已经写完了,如果感到有用,请动一下您的小手点个赞。