码迷,mamicode.com
首页 > Web开发 > 详细

Newtonsoft 解析Json 序列化和反序列化

时间:2021-03-30 13:50:24      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:count   反序列化   value   上传   ndt   for   oat   newton   generic   

经常用到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"}

 

好了,这里已经写完了,如果感到有用,请动一下您的小手点个赞。

 

Newtonsoft 解析Json 序列化和反序列化

标签:count   反序列化   value   上传   ndt   for   oat   newton   generic   

原文地址:https://www.cnblogs.com/lk95/p/14593268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!